import datetime
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import os
from tqdm import tqdm
import seaborn as sns
import time
import gc
pd.set_option('display.max_columns', 115)
pd.set_option('display.max_rows', 100)
import pyodbc
conn = pyodbc.connect("Driver={ODBC Driver 17 for SQL Server};""Server=10.96.64.94;""Database=SalesUT;""UID=Sales_user;""PWD=HknDMZAJ;")
cursor = conn.cursor()
Задача: найти "слабые" маршруты и точки роста для продажи багажа.
Методика: рабзить рейсы на три группы: Московские, Региональные, АТР.
Делим на две группы: букинг и регистрация.
RFISC: РК10 08A, БГ10 0IJ, БГ20 0C2
# query = """
# SELECT * FROM SalesUT.dbo.data2020view
# WHERE [Дата транзакции]>='2021-05-24' and [Дата транзакции]<'2021-06-28'
# """
# query = """
# SELECT * FROM SalesUT.dbo.data2020view
# WHERE [Дата транзакции]>='2021-05-31' and [Дата транзакции]<'2021-07-05'
# """
query = """
SELECT * FROM SalesUT.dbo.data2020view
WHERE [Дата транзакции]>='2021-05-03' and [Дата транзакции]<'2021-07-12'
"""
%%time
result = pd.read_sql(query, conn)
print(1)
result.to_csv('res_2021-05-03_2021-07-12.csv')
print(1)
del result
print(1)
gc.collect()
print(1)
result=pd.DataFrame()
print(1)
result=pd.read_csv('res_2021-05-03_2021-07-12.csv')
print(1)
1 1 1 1 1
<decorator-gen-55>:2: DtypeWarning: Columns (6,12,64) have mixed types.Specify dtype option on import or set low_memory=False.
1 Wall time: 26min 49s
result=pd.read_csv('res_2021-05-03_2021-07-12.csv')
C:\Users\Kovardakov_VA\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py:3146: DtypeWarning: Columns (6,12,64) have mixed types.Specify dtype option on import or set low_memory=False. has_raised = await self.run_ast_nodes(code_ast.body, cell_name,
gc.collect()
20
result.shape # 1544826
(2938749, 67)
result['Дата транзакции'][0]
'2021-07-05'
result['Дата вылета'][0]
'2021-08-21 20:30:00'
#pd.to_datetime(result['Дата вылета']).date
result['Дата вылета'] = pd.to_datetime(result['Дата вылета']).apply(lambda x: x.date())
%%time
result['Дата транзакции'] = pd.to_datetime(result['Дата транзакции'], format='%Y-%m-%d %H:%M:%S')
print('Дата транзакции', result['Дата транзакции'].min())
print('Дата транзакции', result['Дата транзакции'].max())
result['Дата вылета'] = pd.to_datetime(result['Дата вылета'], format='%Y-%m-%d %H:%M:%S')
print('Дата вылета', result['Дата вылета'].min())
print('Дата вылета', result['Дата вылета'].max())
Дата транзакции 2021-05-03 00:00:00 Дата транзакции 2021-07-11 00:00:00 Дата вылета 1899-12-30 00:00:00 Дата вылета 2022-07-02 00:00:00 Wall time: 6.07 s
df_TD = result.copy()
df_TD = df_TD[df_TD['Номер рейса'] != 'OPEN']
df_TD['Номер рейса'] = df_TD['Номер рейса'].fillna(9999)
df_TD['Номер рейса'] = df_TD['Номер рейса'].astype('int64')
%%time
df_TD_with_filtrs = df_TD[
(df_TD['Перевозчик'] == 'UT') &
(df_TD['Вид тарифа'].str.contains('IN00') == False) &
((df_TD['Вид тарифа'].str.contains('CHAR') == False) &
(df_TD['Вид тарифа'].str.contains('REG') == False)) &
(df_TD['Номер рейса'] < 2000) &
(df_TD['Участвует в обмене?'] == 'No')
]
df_TD_with_filtrs=df_TD_with_filtrs[~df_TD_with_filtrs['Номер рейса'].isin([401, 402, 403, 404, 405, 406, 407, 408,
409, 412, 413, 414, 415, 416, 417, 418,
419, 420, 421, 422, 423, 424, 425, 429,
430, 431, 432, 677,678,679,680,1008,1009,
1404,1405,1426,1427,1410,1411,1402,1403,
426,427])]
Wall time: 19.1 s
df_TD_with_filtrs.loc[df_TD_with_filtrs['Пункт вылета'] == 'MOW', 'Пункт вылета'] = 'VKO'
df_TD_with_filtrs.loc[df_TD_with_filtrs['Пункт прилета'] == 'MOW', 'Пункт вылета'] = 'VKO'
df_TD_with_filtrs['Маршрут']=df_TD_with_filtrs[['Пункт вылета','Пункт прилета']].apply(lambda x: '-'.join(sorted(x)),axis=1)
df_TD_with_filtrs['Неделя эксперимента'] = df_TD_with_filtrs['Дата транзакции'].apply(
lambda x: x.isocalendar()[1])
def online_offline(x):
if x=='865' or x=='02ТЮМ':
return 'онлайн'
else:
return 'оффлайн'
df_TD_with_filtrs['онлайн_оффлайн'] = df_TD_with_filtrs['Код агента'].apply(
lambda x: online_offline(x))
def buk_reg(x):
#delta = df_for_nacenka['Дата вылета'][0] - df_for_nacenka['Дата транзакции'][0]
delta = x[0] - x[1]
delta_hours = delta.seconds/60/60+delta.days*24
if delta_hours>36:
return 'букинг'
else:
return 'регистрация'
#df_TD_with_filtrs['Дата вылета'][0]-df_TD_with_filtrs['Дата транзакции'][0]
%%time
df_TD_with_filtrs['букинг_регистрация'] = df_TD_with_filtrs[['Дата вылета','Дата транзакции']].apply(
lambda x: buk_reg(x), axis = 1)
Wall time: 1min 56s
df_TD_with_filtrs['букинг_регистрация'].value_counts()
букинг 2103478 регистрация 510875 Name: букинг_регистрация, dtype: int64
df_TD_with_filtrs['Маршрут']
0 MCX-VKO
1 HMA-NJC
2 HMA-NJC
3 GRV-VKO
4 KUF-VKO
...
2938742 KGD-VKO
2938743 AAQ-VKO
2938744 AAQ-VKO
2938745 AAQ-VKO
2938748 KRR-VKO
Name: Маршрут, Length: 2614353, dtype: object
df_TD_with_filtrs['Московский_Региональный'] = df_TD_with_filtrs['Маршрут'].apply(
lambda x: 'московский' if 'VKO' in x else 'региональный')
df_TD_with_filtrs['Московский_Региональный'].value_counts()
московский 1807720 региональный 806633 Name: Московский_Региональный, dtype: int64
df_TD_with_filtrs['Есть возврат'] = 0
df_TD_with_filtrs['Есть возврат'] = df_TD_with_filtrs[['Вид операции (бланка)','Есть возврат']].apply(
lambda x: 1 if x[0] == 'REFUND' else 0, axis=1)
%%time
df_TD_with_filtrs_refund = df_TD_with_filtrs[df_TD_with_filtrs['Вид операции (бланка)'] == 'REFUND']
df_TD_with_filtrs_not_refund = df_TD_with_filtrs[(df_TD_with_filtrs['Вид операции (бланка)'] != 'REFUND')]
Wall time: 4.62 s
df_TD_with_filtrs_with_refund = df_TD_with_filtrs_not_refund.merge(df_TD_with_filtrs_refund[['Номер бланка',
'Номер рейса',
'Есть возврат']],
how='left', on = ['Номер бланка','Номер рейса'])
df_TD_with_filtrs_with_refund['Есть возврат_y'] = df_TD_with_filtrs_with_refund['Есть возврат_y'].fillna(0)
df_TD_with_filtrs_with_refund['Есть возврат_y'].value_counts()
0.0 2519823 1.0 33850 Name: Есть возврат_y, dtype: int64
df_TD_with_filtrs_with_refund = df_TD_with_filtrs_with_refund.rename(columns = {'Есть возврат_x':'Есть возврат REFUND','Есть возврат_y':'Есть возврат прикрепленный'})
%%time
df_TD_with_filtrs_tickets = df_TD_with_filtrs_with_refund[df_TD_with_filtrs_with_refund['Вид операции (бланка)'] == 'TCT']
df_TD_with_filtrs_uslugi = df_TD_with_filtrs_with_refund[(df_TD_with_filtrs_with_refund['Вид операции (бланка)'] != 'TCT') &
(df_TD_with_filtrs_with_refund['Вид операции (бланка)'] != 'REFUND')]
Wall time: 13.2 s
print(df_TD_with_filtrs_tickets.shape)
print(df_TD_with_filtrs_uslugi.shape)
(1727493, 74) (826180, 74)
df_TD_with_filtrs_tickets = df_TD_with_filtrs_tickets.rename({'Номер бланка':'Соединение1'},axis='columns')
df_TD_with_filtrs_uslugi = df_TD_with_filtrs_uslugi.rename({'EMD - связанный документ':'Соединение1'},axis='columns')
xx = {
# 'Багаж' : ['0GM','0BT','0BS','024','025','026','05X','05Y','0EF','0ED',
# 'AMM','AMP','04U','04V','065','0EG','0EH','0KJ','0KK','0FV',
# '0L1','0HV','0DC','0FY','0HR','0F0','0KN','0KO','0EE','0LZ',
# '0HZ','0H0','0F5','0GD','0GH','0GQ','0GI','0OD','0OE','0NP',
# '0N1','052','0F8','0EC','0HY','0FQ','0EB','0HS','0HT','0EI',
# '0NR','0NT','0NS','051','0DD','SCT','SC2','0LN','0GP','0C3',
# '0M6','0E3','0C5','0E5','0IA','0MU','0IJ','0FB','0FN','0FK',
# '0DK','027','035','0DG','0C2','08G','021','02T','03B',
# '0AA','0C1','0CU','0CZ','0F4','0FM','0GO','0IG','0IK','0L5',
# '0MN','0PZ','PLB','0H5','0C2','03C','0G7','0H9','0MJ','1AA','0PS'], #then 'Багаж'
'БГ10' : ['0E5','0IJ','0CU','0CZ','03C','1AA'], #then 'БГ10'
'БГ20' : ['0GP','0IA','0C2','0AA','0C1','0F4','PLB','0C2','0C2','0G7'], #then 'БГ20'
# 'Негабаритный багаж' : ['0GM','0FB','0FK','0DK','035','02T','0IG','0PZ','0H5'], #then 'Негабаритный багаж'
# 'Сверхнормативный багаж' : ['0M6','0C5','0FN','027','0DG','0FM','0IK','0H5','0H9'],
'РК10':['08A']} #then 'Сверхнормативный багаж'
yy={}
for i in xx.keys():
for j in range(len(xx['{}'.format(i)])):
yy['{}'.format(xx['{}'.format(i)][j])] = i
len(yy)
15
def yyfunc(x):
try:
return yy[x]
except KeyError:
pass
%%time
df_TD_with_filtrs_uslugi['Тип_багажа'] = df_TD_with_filtrs_uslugi['Причина выписки купона EMD'].apply(
lambda x: yyfunc(x))
df_TD_with_filtrs_uslugi['Услуга_Багаж'] = df_TD_with_filtrs_uslugi['Тип_багажа'].apply(
lambda x: 1 if x in xx.keys() else 0)
Wall time: 1.23 s
df_TD_with_filtrs_uslugi['Услуга_Багаж'].value_counts()
0 717346 1 108834 Name: Услуга_Багаж, dtype: int64
df_TD_with_filtrs_uslugi = df_TD_with_filtrs_uslugi[['Услуга_Багаж',
'Тип_багажа',
'Тариф на купоне',
'Соединение1',
'Номер рейса',
'Есть возврат REFUND',
'Есть возврат прикрепленный'
#'Услуга2_Место бизнес-класса'
]].fillna(0)
df_TD_with_filtrs_uslugi = df_TD_with_filtrs_uslugi.rename(columns = {
'Тариф на купоне':'Тариф на купоне из услуг',
'Есть возврат прикрепленный':'Есть возврат прикрепленный из услуг',
'Есть возврат REFUND':'Есть возврат REFUND прикрепленный'})
df_TD_with_filtrs_uslugi['Тариф на купоне из услуг'] = df_TD_with_filtrs_uslugi.apply(
lambda x: x['Тариф на купоне из услуг'] if x['Услуга_Багаж']>0 else 0,
axis=1)
df_TD_with_filtrs_uslugi_notgroupeby = df_TD_with_filtrs_uslugi.copy()
df_TD_with_filtrs_uslugi = df_TD_with_filtrs_uslugi.groupby(by = ['Соединение1', 'Номер рейса','Тип_багажа']).sum().reset_index()
df_TD_with_filtrs_uslugi['Услуга_Багаж'].value_counts()
0 536310 1 105569 2 1428 3 91 4 18 5 6 6 3 9 1 7 1 Name: Услуга_Багаж, dtype: int64
df_TD_with_filtrs_uslugi[(df_TD_with_filtrs_uslugi['Услуга_Багаж']==9)]
#df_TD[(df_TD['ФИО пассажира']=='ALESKEROV/KAVKAZ MR')]
| Соединение1 | Номер рейса | Тип_багажа | Услуга_Багаж | Тариф на купоне из услуг | Есть возврат REFUND прикрепленный | Есть возврат прикрепленный из услуг | |
|---|---|---|---|---|---|---|---|
| 579900 | 298 6172282459 | 333 | БГ20 | 9 | 31500.0 | 0 | 0.0 |
df_TD_with_filtrs_uslugi[0:5]
| Соединение1 | Номер рейса | Тип_багажа | Услуга_Багаж | Тариф на купоне из услуг | Есть возврат REFUND прикрепленный | Есть возврат прикрепленный из услуг | |
|---|---|---|---|---|---|---|---|
| 0 | 141 9090779340 | 246 | 0 | 0 | 0.0 | 0 | 0.0 |
| 1 | 169 3359393113 | 1355 | 0 | 0 | 0.0 | 0 | 0.0 |
| 2 | 169 3359393113 | 1355 | БГ10 | 2 | 4600.0 | 0 | 0.0 |
| 3 | 169 3359393114 | 1355 | БГ10 | 1 | 2300.0 | 0 | 0.0 |
| 4 | 169 3365765063 | 183 | РК10 | 1 | 2800.0 | 0 | 0.0 |
df_TD_with_filtrs_uslugi['Тип_багажа'].value_counts()
0 536310 БГ20 42870 БГ10 41563 РК10 22684 Name: Тип_багажа, dtype: int64
df_TD_with_filtrs_tickets.shape
(1727493, 74)
df_TD_with_filtrs_tickets_only = df_TD_with_filtrs_tickets.copy()
%%time
df_TD_with_filtrs_tickets = df_TD_with_filtrs_tickets.merge(
df_TD_with_filtrs_uslugi, how='left', on = ['Соединение1','Номер рейса'])
Wall time: 38.6 s
df_TD_with_filtrs_tickets['Тип_багажа'].value_counts()
0 444223 БГ20 34476 БГ10 32192 РК10 19521 Name: Тип_багажа, dtype: int64
df_TD_with_filtrs_tickets.shape
(1768947, 79)
print(df_TD_with_filtrs_tickets.columns)
Index(['Unnamed: 0', 'Соединение1', 'Номер купона', 'Вид операции (бланка)',
'DOC_ID из TDB', 'Перевозчик', 'Номер рейса', 'Пункт вылета',
'Пункт прилета', 'Код агента', 'Наименование агента',
'Пункт продажи (валидатор)', 'Код кассира',
'Фактический агент BSP Russia', 'Количество купонов документа',
'Количество проданных сегментов', 'Класс бронирования', 'Вид тарифа',
'Тариф на купоне РУБ', 'Топливный сбор РУБ', 'Такса ТКП (ZZ) РУБ',
'Штраф за возврат\обмен (CP) РУБ', 'Сбор RU РУБ',
'Сбор за бланк (PS,YR) РУБ', 'Прочие сборы РУБ', 'Валюта',
'Тариф на купоне', 'Топливный сбор', 'Такса ТКП (ZZ)',
'Штраф за возврат\обмен (CP)', 'Сбор RU', 'Сбор за бланк (PS,YR)',
'Прочие сборы', 'Дата транзакции', 'Дата вылета', 'GDS', 'Сеанс_gds?',
'Система продажи', 'Тип_пункта_продажи', 'Код_ИПП',
'Номер карты частолетающего пассажира',
'Сумма бонусов на купоне (эквив. РУБ)', 'Участвует в обмене?',
'Номер документа (обмен)', 'Валюта доплаты', 'Сумма доплаты',
'Сумма доплаты РУБ', 'Примечание по ФОП', 'Перевозка туда-обратно',
'Трансферная перевозка', 'Бренд', 'Категория пассажира',
'Причина выписки купона EMD', 'Группа доп.услуг', 'FF?',
'Структура тарифа', 'PNR', 'Номер ваучера',
'Номера Возвращаемых В Обмен На Ваучер Документов',
'Возврат в обмен на ваучер', 'Ваучер', 'Обмен ваучера на билет/услугу',
'ФИО пассажира', 'Паспорт пассажира', 'День рождения пассажира',
'EMD - связанный документ', 'EMD - номер купона связанного документа',
'Маршрут', 'Неделя эксперимента', 'онлайн_оффлайн',
'букинг_регистрация', 'Московский_Региональный', 'Есть возврат REFUND',
'Есть возврат прикрепленный', 'Тип_багажа', 'Услуга_Багаж',
'Тариф на купоне из услуг', 'Есть возврат REFUND прикрепленный',
'Есть возврат прикрепленный из услуг'],
dtype='object')
нужна здесь и наценка
import re
# обязательно RT TR OW цифры после st std str fl lt
# HFL40RT
def nac(x):
try:
nac = 0
skidka = 0
if ('RT' in x) or ('TR' in x) or ('OW' in x):
for i in ['STD','STR','FL','LT','ST']:
try:
if (x[x.index(i)+3:x.index(i)+4].isdigit()):
a = x.split('/')
if len(x.split('/'))==2 and len(re.sub('\D', '', a[0]))>1:
cumma = int(re.sub('\D', '', a[0])[0:2])*100 #сумма наценки
if re.sub('\D', '', a[1]) != '':
skidka = float(re.sub('\D', '', a[1]))/100 #скидка в процентах
#else:
if re.sub('\D', '', a[1]) == '00': # добавил такое чтобы скидка только если 00 считалась
skidka = (float(re.sub('\D', '', a[1]))+100)/100 #скидка в процентах
nac = cumma*(1-skidka)
if (len(x.split('/'))==1 and len(re.sub('\D', '', a[0]))>1) or re.sub('\D', '', x.split('/')[1]) == '':
cumma = int(re.sub('\D', '', a[0])[0:2])*100 #сумма наценки
nac = cumma
#
except ValueError:
pass
return(nac)
except ValueError:
pass
df_TD_with_filtrs_tickets_only['Наценка'] = df_TD_with_filtrs_tickets_only['Вид тарифа'].apply(lambda x: nac(x))
df_TD_with_filtrs_uslugi_for_only_tickets = df_TD_with_filtrs_uslugi_notgroupeby.groupby(
by = ['Соединение1', 'Номер рейса']).sum().reset_index()
df_TD_with_filtrs_tickets[0:5]
| Unnamed: 0 | Соединение1 | Номер купона | Вид операции (бланка) | DOC_ID из TDB | Перевозчик | Номер рейса | Пункт вылета | Пункт прилета | Код агента | Наименование агента | Пункт продажи (валидатор) | Код кассира | Фактический агент BSP Russia | Количество купонов документа | Количество проданных сегментов | Класс бронирования | Вид тарифа | Тариф на купоне РУБ | Топливный сбор РУБ | Такса ТКП (ZZ) РУБ | Штраф за возврат\обмен (CP) РУБ | Сбор RU РУБ | Сбор за бланк (PS,YR) РУБ | Прочие сборы РУБ | Валюта | Тариф на купоне | Топливный сбор | Такса ТКП (ZZ) | Штраф за возврат\обмен (CP) | Сбор RU | Сбор за бланк (PS,YR) | Прочие сборы | Дата транзакции | Дата вылета | GDS | Сеанс_gds? | Система продажи | Тип_пункта_продажи | Код_ИПП | Номер карты частолетающего пассажира | Сумма бонусов на купоне (эквив. РУБ) | Участвует в обмене? | Номер документа (обмен) | Валюта доплаты | Сумма доплаты | Сумма доплаты РУБ | Примечание по ФОП | Перевозка туда-обратно | Трансферная перевозка | Бренд | Категория пассажира | Причина выписки купона EMD | Группа доп.услуг | FF? | Структура тарифа | PNR | Номер ваучера | Номера Возвращаемых В Обмен На Ваучер Документов | Возврат в обмен на ваучер | Ваучер | Обмен ваучера на билет/услугу | ФИО пассажира | Паспорт пассажира | День рождения пассажира | EMD - связанный документ | EMD - номер купона связанного документа | Маршрут | Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | Есть возврат REFUND | Есть возврат прикрепленный | Тип_багажа | Услуга_Багаж | Тариф на купоне из услуг | Есть возврат REFUND прикрепленный | Есть возврат прикрепленный из услуг | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 298 2431671622 | 1.0 | TCT | 273878876.0 | UT | 448 | MCX | VKO | 865 | ПАО 'Авиакомпания 'ЮТэйр' | 29843203 | 1823 | NaN | 2.0 | 1.0 | W | WFL42OW/CH25 | 8625.0 | 800.0 | 0.0 | 0.0 | 0.0 | 185.0 | 0.0 | RUB | 8625.0 | 800.0 | 0.0 | 0.0 | 0.0 | 185.0 | 0.0 | 2021-07-05 | 2021-08-21 | Сирена | ГРС | Агентская | АПП | NaN | NaN | 0.0 | No | NaN | NaN | NaN | NaN | CC/VI4058/4058709999999450/RUB18695 | NaN | TR | NaN | CHILD | NaN | NaN | - | MCX UT MOW8625UT SGC8100RUB16725END RUB370YR R... | 9Z10DV | NaN | NaN | NaN | НЕТ | НЕТ | БАЙРАКОВА/САНИЯТ АРСЛАНОВНА Г-ЖА CHD06ИЮН11 | СР IIПН529797:CNN | NaN | NaN | NaN | MCX-VKO | 27 | онлайн | букинг | московский | 0 | 0.0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 1 | 1 | 298 2431672983 | 1.0 | TCT | 273880236.0 | UT | 316 | NJC | HMA | 865 | ПАО 'Авиакомпания 'ЮТэйр' | 29828326 | 1703 | NaN | 2.0 | 1.0 | N | NSTR01RT | 2741.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | RUB | 2741.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2021-07-05 | 2021-08-07 | Сирена | ГРС | Агентская | АПП | NaN | NaN | 0.0 | No | NaN | NaN | NaN | NaN | CC/MR2200/2200299999991401/RUB5482 | RT | NaN | Optimum+ | ADULT | NaN | NaN | - | NJC UT HMA2741UT NJC2741RUB5482END | 9Z1FWS | NaN | NaN | NaN | НЕТ | НЕТ | МИРОШНИЧЕНКО/ДМИТРИЙ ЮРЬЕВИЧ Г-Н 31ОКТ06 | ПС 6720945139:ADT | NaN | NaN | NaN | HMA-NJC | 27 | онлайн | букинг | региональный | 0 | 0.0 | NaN | NaN | NaN | NaN | NaN |
| 2 | 2 | 298 2431672983 | 2.0 | TCT | 273880236.0 | UT | 315 | HMA | NJC | 865 | ПАО 'Авиакомпания 'ЮТэйр' | 29828326 | 1703 | NaN | 2.0 | 1.0 | N | NSTR01RT | 2741.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | RUB | 2741.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2021-07-05 | 2021-08-10 | Сирена | ГРС | Агентская | АПП | NaN | NaN | 0.0 | No | NaN | NaN | NaN | NaN | CC/MR2200/2200299999991401/RUB5482 | RT | NaN | Optimum+ | ADULT | NaN | NaN | - | NJC UT HMA2741UT NJC2741RUB5482END | 9Z1FWS | NaN | NaN | NaN | НЕТ | НЕТ | МИРОШНИЧЕНКО/ДМИТРИЙ ЮРЬЕВИЧ Г-Н 31ОКТ06 | ПС 6720945139:ADT | NaN | NaN | NaN | HMA-NJC | 27 | онлайн | букинг | региональный | 0 | 0.0 | NaN | NaN | NaN | NaN | NaN |
| 3 | 3 | 298 2431667262 | 1.0 | TCT | 273774467.0 | UT | 561 | VKO | GRV | 865 | ПАО 'Авиакомпания 'ЮТэйр' | 29828326 | 1701 | NaN | 1.0 | 1.0 | K | KLTOW | 4100.0 | 1000.0 | 0.0 | 0.0 | 0.0 | 185.0 | 0.0 | RUB | 4100.0 | 1000.0 | 0.0 | 0.0 | 0.0 | 185.0 | 0.0 | 2021-07-04 | 2021-07-09 | Сирена | ГРС | Агентская | АПП | NaN | NaN | 0.0 | No | NaN | NaN | NaN | NaN | CC/VI4801/4801149999998235/RUB5285 | NaN | NaN | Light | ADULT | NaN | NaN | - | MOW UT GRV4100RUB4100END RUB185YR RUB1000YQ | 9CCLV9 | NaN | NaN | NaN | НЕТ | НЕТ | СУЛДАНОВА/ДИАНА Г-ЖА 26СЕН03 | ПС 9617753973:ADT | NaN | NaN | NaN | GRV-VKO | 26 | онлайн | букинг | московский | 0 | 0.0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 4 | 3 | 298 2431667262 | 1.0 | TCT | 273774467.0 | UT | 561 | VKO | GRV | 865 | ПАО 'Авиакомпания 'ЮТэйр' | 29828326 | 1701 | NaN | 1.0 | 1.0 | K | KLTOW | 4100.0 | 1000.0 | 0.0 | 0.0 | 0.0 | 185.0 | 0.0 | RUB | 4100.0 | 1000.0 | 0.0 | 0.0 | 0.0 | 185.0 | 0.0 | 2021-07-04 | 2021-07-09 | Сирена | ГРС | Агентская | АПП | NaN | NaN | 0.0 | No | NaN | NaN | NaN | NaN | CC/VI4801/4801149999998235/RUB5285 | NaN | NaN | Light | ADULT | NaN | NaN | - | MOW UT GRV4100RUB4100END RUB185YR RUB1000YQ | 9CCLV9 | NaN | NaN | NaN | НЕТ | НЕТ | СУЛДАНОВА/ДИАНА Г-ЖА 26СЕН03 | ПС 9617753973:ADT | NaN | NaN | NaN | GRV-VKO | 26 | онлайн | букинг | московский | 0 | 0.0 | РК10 | 1.0 | 2500.0 | 0.0 | 0.0 |
df_TD_good_for_nac_svod_segmts = df_TD_with_filtrs_tickets_only.pivot_table(
values = 'Количество проданных сегментов',
index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента', aggfunc = 'sum')
bag_kolvo = df_TD_with_filtrs_tickets.pivot_table(
values = 'Услуга_Багаж',
index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента',
aggfunc = 'sum')
bag_kolvo = bag_kolvo.reset_index()
df_TD_good_for_nac_svod_segmts = df_TD_good_for_nac_svod_segmts.reset_index()
dolya_bag = bag_kolvo.merge(df_TD_good_for_nac_svod_segmts,
how = 'left',
on = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный']
).set_index(['Маршрут'])
dolya_bag
for i in df_TD_good_for_nac_svod_segmts.columns[4:]:
dolya_bag['{}_dolya'.format(i)] = dolya_bag['{}_x'.format(i)]/dolya_bag['{}_y'.format(i)]
dolya_bag[:3] #= dolya_bag.iloc[:,[0,1,2,13,14,15,16,17]]
#dolya_bag = dolya_bag.reset_index()
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 18_x | 19_x | 20_x | 21_x | 22_x | 23_x | 24_x | 25_x | 26_x | 27_x | 18_y | 19_y | 20_y | 21_y | 22_y | 23_y | 24_y | 25_y | 26_y | 27_y | 18_dolya | 19_dolya | 20_dolya | 21_dolya | 22_dolya | 23_dolya | 24_dolya | 25_dolya | 26_dolya | 27_dolya |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | |||||||||||||||||||||||||||||||||
| AAQ-AER | онлайн | букинг | региональный | 52.0 | 34.0 | 38.0 | 46.0 | 29.0 | 50.0 | 40.0 | 17.0 | 21.0 | 12.0 | 585.0 | 456.0 | 521.0 | 477.0 | 521.0 | 618.0 | 485.0 | 465.0 | 368.0 | 436.0 | 0.088889 | 0.074561 | 0.072937 | 0.096436 | 0.055662 | 0.080906 | 0.082474 | 0.036559 | 0.057065 | 0.027523 |
| AAQ-AER | онлайн | регистрация | региональный | 1.0 | 3.0 | 5.0 | 8.0 | 4.0 | 9.0 | 6.0 | 2.0 | 5.0 | 4.0 | 70.0 | 77.0 | 97.0 | 91.0 | 98.0 | 111.0 | 96.0 | 98.0 | 76.0 | 112.0 | 0.014286 | 0.038961 | 0.051546 | 0.087912 | 0.040816 | 0.081081 | 0.062500 | 0.020408 | 0.065789 | 0.035714 |
| AAQ-AER | оффлайн | букинг | региональный | 22.0 | 17.0 | 11.0 | 11.0 | 10.0 | 16.0 | 13.0 | 14.0 | 8.0 | 5.0 | 219.0 | 194.0 | 313.0 | 194.0 | 323.0 | 182.0 | 257.0 | 231.0 | 219.0 | 264.0 | 0.100457 | 0.087629 | 0.035144 | 0.056701 | 0.030960 | 0.087912 | 0.050584 | 0.060606 | 0.036530 | 0.018939 |
income_bag = df_TD_with_filtrs_tickets.pivot_table(
values = 'Тариф на купоне из услуг',
index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента',
aggfunc = 'sum')
income_bag = income_bag.reset_index()
dolya_bag = dolya_bag.reset_index()
income_dolya_bag = dolya_bag.merge(income_bag,
how = 'left',
on = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный']
).set_index(['Маршрут'])
for i in df_TD_good_for_nac_svod_segmts.columns[4:]:
income_dolya_bag['{}_mean_bag'.format(i)] = income_dolya_bag[i]/income_dolya_bag['{}_y'.format(i)]
income_dolya_bag[:3]
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 18_x | 19_x | 20_x | 21_x | 22_x | 23_x | 24_x | 25_x | 26_x | 27_x | 18_y | 19_y | 20_y | 21_y | 22_y | 23_y | 24_y | 25_y | 26_y | 27_y | 18_dolya | 19_dolya | 20_dolya | 21_dolya | 22_dolya | 23_dolya | 24_dolya | 25_dolya | 26_dolya | 27_dolya | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 18_mean_bag | 19_mean_bag | 20_mean_bag | 21_mean_bag | 22_mean_bag | 23_mean_bag | 24_mean_bag | 25_mean_bag | 26_mean_bag | 27_mean_bag |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| AAQ-AER | онлайн | букинг | региональный | 52.0 | 34.0 | 38.0 | 46.0 | 29.0 | 50.0 | 40.0 | 17.0 | 21.0 | 12.0 | 585.0 | 456.0 | 521.0 | 477.0 | 521.0 | 618.0 | 485.0 | 465.0 | 368.0 | 436.0 | 0.088889 | 0.074561 | 0.072937 | 0.096436 | 0.055662 | 0.080906 | 0.082474 | 0.036559 | 0.057065 | 0.027523 | 101462.0 | 65675.33 | 75171.0 | 97268.5 | 64679.0 | 103159.0 | 87479.5 | 32889.5 | 40282.0 | 21590.0 | 173.439316 | 144.024846 | 144.282150 | 203.917191 | 124.143954 | 166.923948 | 180.370103 | 70.730108 | 109.461957 | 49.518349 |
| AAQ-AER | онлайн | регистрация | региональный | 1.0 | 3.0 | 5.0 | 8.0 | 4.0 | 9.0 | 6.0 | 2.0 | 5.0 | 4.0 | 70.0 | 77.0 | 97.0 | 91.0 | 98.0 | 111.0 | 96.0 | 98.0 | 76.0 | 112.0 | 0.014286 | 0.038961 | 0.051546 | 0.087912 | 0.040816 | 0.081081 | 0.062500 | 0.020408 | 0.065789 | 0.035714 | 3000.0 | 6500.00 | 13100.0 | 18199.0 | 10000.0 | 22200.0 | 13299.0 | 5800.0 | 12400.0 | 9500.0 | 42.857143 | 84.415584 | 135.051546 | 199.989011 | 102.040816 | 200.000000 | 138.531250 | 59.183673 | 163.157895 | 84.821429 |
| AAQ-AER | оффлайн | букинг | региональный | 22.0 | 17.0 | 11.0 | 11.0 | 10.0 | 16.0 | 13.0 | 14.0 | 8.0 | 5.0 | 219.0 | 194.0 | 313.0 | 194.0 | 323.0 | 182.0 | 257.0 | 231.0 | 219.0 | 264.0 | 0.100457 | 0.087629 | 0.035144 | 0.056701 | 0.030960 | 0.087912 | 0.050584 | 0.060606 | 0.036530 | 0.018939 | 51595.0 | 40889.00 | 29299.0 | 22397.0 | 21394.0 | 40397.5 | 29796.0 | 29494.0 | 17998.0 | 9097.0 | 235.593607 | 210.768041 | 93.607029 | 115.448454 | 66.235294 | 221.964286 | 115.937743 | 127.679654 | 82.182648 | 34.458333 |
nac_tarif = df_TD_with_filtrs_tickets_only.pivot_table(
values = 'Наценка',
index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента',
aggfunc = 'sum')
income_dolya_bag = income_dolya_bag.reset_index()
nac_tarif = nac_tarif.reset_index()
income_dolya_bag_nac = income_dolya_bag.merge(nac_tarif,
how = 'left',
on = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный']
).set_index(['Маршрут'])
for i in df_TD_good_for_nac_svod_segmts.columns[4:]:
income_dolya_bag_nac['{}_mean_nac'.format(i)] = income_dolya_bag_nac.iloc[:,i+7]/income_dolya_bag_nac.iloc[:,i-13]
income_dolya_bag_nac[:3]
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 18_x | 19_x | 20_x | 21_x | 22_x | 23_x | 24_x | 25_x | 26_x | 27_x | 18_y | 19_y | 20_y | 21_y | 22_y | 23_y | 24_y | 25_y | 26_y | 27_y | 18_dolya | 19_dolya | 20_dolya | 21_dolya | 22_dolya | 23_dolya | 24_dolya | 25_dolya | 26_dolya | 27_dolya | 18_x | 19_x | 20_x | 21_x | 22_x | 23_x | 24_x | 25_x | 26_x | 27_x | 18_mean_bag | 19_mean_bag | 20_mean_bag | 21_mean_bag | 22_mean_bag | 23_mean_bag | 24_mean_bag | 25_mean_bag | 26_mean_bag | 27_mean_bag | 18_y | 19_y | 20_y | 21_y | 22_y | 23_y | 24_y | 25_y | 26_y | 27_y | 18_mean_nac | 19_mean_nac | 20_mean_nac | 21_mean_nac | 22_mean_nac | 23_mean_nac | 24_mean_nac | 25_mean_nac | 26_mean_nac | 27_mean_nac |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| AAQ-AER | онлайн | букинг | региональный | 52.0 | 34.0 | 38.0 | 46.0 | 29.0 | 50.0 | 40.0 | 17.0 | 21.0 | 12.0 | 585.0 | 456.0 | 521.0 | 477.0 | 521.0 | 618.0 | 485.0 | 465.0 | 368.0 | 436.0 | 0.088889 | 0.074561 | 0.072937 | 0.096436 | 0.055662 | 0.080906 | 0.082474 | 0.036559 | 0.057065 | 0.027523 | 101462.0 | 65675.33 | 75171.0 | 97268.5 | 64679.0 | 103159.0 | 87479.5 | 32889.5 | 40282.0 | 21590.0 | 173.439316 | 144.024846 | 144.282150 | 203.917191 | 124.143954 | 166.923948 | 180.370103 | 70.730108 | 109.461957 | 49.518349 | 203000.0 | 151375.0 | 175000.0 | 171000.0 | 231125.0 | 231375.0 | 227000.0 | 191250.0 | 193875.0 | 177050.0 | 0.001919 | 0.002096 | 0.001919 | 0.001618 | 0.002062 | 0.002151 | 0.002717 | 0.002294 | 173.439316 | 144.024846 |
| AAQ-AER | онлайн | регистрация | региональный | 1.0 | 3.0 | 5.0 | 8.0 | 4.0 | 9.0 | 6.0 | 2.0 | 5.0 | 4.0 | 70.0 | 77.0 | 97.0 | 91.0 | 98.0 | 111.0 | 96.0 | 98.0 | 76.0 | 112.0 | 0.014286 | 0.038961 | 0.051546 | 0.087912 | 0.040816 | 0.081081 | 0.062500 | 0.020408 | 0.065789 | 0.035714 | 3000.0 | 6500.00 | 13100.0 | 18199.0 | 10000.0 | 22200.0 | 13299.0 | 5800.0 | 12400.0 | 9500.0 | 42.857143 | 84.415584 | 135.051546 | 199.989011 | 102.040816 | 200.000000 | 138.531250 | 59.183673 | 163.157895 | 84.821429 | 29000.0 | 28125.0 | 29125.0 | 21000.0 | 23250.0 | 25125.0 | 14125.0 | 43500.0 | 25750.0 | 40175.0 | 0.010309 | 0.010989 | 0.010204 | 0.009009 | 0.010417 | 0.010204 | 0.013158 | 0.008929 | 42.857143 | 84.415584 |
| AAQ-AER | оффлайн | букинг | региональный | 22.0 | 17.0 | 11.0 | 11.0 | 10.0 | 16.0 | 13.0 | 14.0 | 8.0 | 5.0 | 219.0 | 194.0 | 313.0 | 194.0 | 323.0 | 182.0 | 257.0 | 231.0 | 219.0 | 264.0 | 0.100457 | 0.087629 | 0.035144 | 0.056701 | 0.030960 | 0.087912 | 0.050584 | 0.060606 | 0.036530 | 0.018939 | 51595.0 | 40889.00 | 29299.0 | 22397.0 | 21394.0 | 40397.5 | 29796.0 | 29494.0 | 17998.0 | 9097.0 | 235.593607 | 210.768041 | 93.607029 | 115.448454 | 66.235294 | 221.964286 | 115.937743 | 127.679654 | 82.182648 | 34.458333 | 69500.0 | 98250.0 | 220075.0 | 92375.0 | 147720.0 | 136095.0 | 172675.0 | 159525.0 | 94750.0 | 116925.0 | 0.003195 | 0.005155 | 0.003096 | 0.005495 | 0.003891 | 0.004329 | 0.004566 | 0.003788 | 235.593607 | 210.768041 |
income_dolya_bag_nac.to_excel('Делаем в Эксель.xlsx')
# df_main_kpi = income_dolya_bag_nac[['онлайн_оффлайн',
# 'букинг_регистрация',
# 'Московский_Региональный',
# '22_dolya','23_dolya', '24_dolya', '25_dolya', '26_dolya',
# '22_mean_bag', '23_mean_bag', '24_mean_bag', '25_mean_bag', '26_mean_bag',
# '22_mean_nac', '23_mean_nac', '24_mean_nac', '25_mean_nac', '26_mean_nac']]
# df_main_kpi
def ids_cols(df):
cols = df.columns
ids = -1
for i in cols:
ids += 1
print(ids, ' ', i)
ids_cols(income_dolya_bag_nac)
0 онлайн_оффлайн 1 букинг_регистрация 2 Московский_Региональный 3 18_x 4 19_x 5 20_x 6 21_x 7 22_x 8 23_x 9 24_x 10 25_x 11 26_x 12 27_x 13 18_y 14 19_y 15 20_y 16 21_y 17 22_y 18 23_y 19 24_y 20 25_y 21 26_y 22 27_y 23 18_dolya 24 19_dolya 25 20_dolya 26 21_dolya 27 22_dolya 28 23_dolya 29 24_dolya 30 25_dolya 31 26_dolya 32 27_dolya 33 18_x 34 19_x 35 20_x 36 21_x 37 22_x 38 23_x 39 24_x 40 25_x 41 26_x 42 27_x 43 18_mean_bag 44 19_mean_bag 45 20_mean_bag 46 21_mean_bag 47 22_mean_bag 48 23_mean_bag 49 24_mean_bag 50 25_mean_bag 51 26_mean_bag 52 27_mean_bag 53 18_y 54 19_y 55 20_y 56 21_y 57 22_y 58 23_y 59 24_y 60 25_y 61 26_y 62 27_y 63 18_mean_nac 64 19_mean_nac 65 20_mean_nac 66 21_mean_nac 67 22_mean_nac 68 23_mean_nac 69 24_mean_nac 70 25_mean_nac 71 26_mean_nac 72 27_mean_nac
count_weeks = 10
income_dolya_bag_nac.columns[0:23].to_list()
['онлайн_оффлайн', 'букинг_регистрация', 'Московский_Региональный', '18_x', '19_x', '20_x', '21_x', '22_x', '23_x', '24_x', '25_x', '26_x', '27_x', '18_y', '19_y', '20_y', '21_y', '22_y', '23_y', '24_y', '25_y', '26_y', '27_y']
columns_for_raschet = income_dolya_bag_nac.columns[0:(count_weeks*2+3)].to_list() +\
income_dolya_bag_nac.columns[(count_weeks*3+3):(count_weeks*4+3)].to_list() +\
income_dolya_bag_nac.columns[(count_weeks*5+3):(count_weeks*6+3)].to_list()
income_dolya_bag_nac.columns[0:(count_weeks*2+3)].to_list()
['онлайн_оффлайн', 'букинг_регистрация', 'Московский_Региональный', '18_x', '19_x', '20_x', '21_x', '22_x', '23_x', '24_x', '25_x', '26_x', '27_x', '18_y', '19_y', '20_y', '21_y', '22_y', '23_y', '24_y', '25_y', '26_y', '27_y']
# columns_for_raschet
exemple = income_dolya_bag_nac.iloc[:,[i for i in range(0,(count_weeks*2+3))] +\
[i for i in range((count_weeks*3+3),(count_weeks*4+3))] +\
[i for i in range((count_weeks*5+3),(count_weeks*6+3))]
]
exemple[:7]
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 18_x | 19_x | 20_x | 21_x | 22_x | 23_x | 24_x | 25_x | 26_x | 27_x | 18_y | 19_y | 20_y | 21_y | 22_y | 23_y | 24_y | 25_y | 26_y | 27_y | 18_x | 19_x | 20_x | 21_x | 22_x | 23_x | 24_x | 25_x | 26_x | 27_x | 18_y | 19_y | 20_y | 21_y | 22_y | 23_y | 24_y | 25_y | 26_y | 27_y |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | |||||||||||||||||||||||||||||||||||||||||||
| AAQ-AER | онлайн | букинг | региональный | 52.0 | 34.0 | 38.0 | 46.0 | 29.0 | 50.0 | 40.0 | 17.0 | 21.0 | 12.0 | 585.0 | 456.0 | 521.0 | 477.0 | 521.0 | 618.0 | 485.0 | 465.0 | 368.0 | 436.0 | 101462.00 | 65675.33 | 75171.0 | 97268.5 | 64679.0 | 103159.00 | 87479.5 | 32889.50 | 40282.0 | 21590.0 | 203000.0 | 151375.0 | 175000.0 | 171000.0 | 231125.0 | 231375.0 | 227000.0 | 191250.0 | 193875.0 | 177050.0 |
| AAQ-AER | онлайн | регистрация | региональный | 1.0 | 3.0 | 5.0 | 8.0 | 4.0 | 9.0 | 6.0 | 2.0 | 5.0 | 4.0 | 70.0 | 77.0 | 97.0 | 91.0 | 98.0 | 111.0 | 96.0 | 98.0 | 76.0 | 112.0 | 3000.00 | 6500.00 | 13100.0 | 18199.0 | 10000.0 | 22200.00 | 13299.0 | 5800.00 | 12400.0 | 9500.0 | 29000.0 | 28125.0 | 29125.0 | 21000.0 | 23250.0 | 25125.0 | 14125.0 | 43500.0 | 25750.0 | 40175.0 |
| AAQ-AER | оффлайн | букинг | региональный | 22.0 | 17.0 | 11.0 | 11.0 | 10.0 | 16.0 | 13.0 | 14.0 | 8.0 | 5.0 | 219.0 | 194.0 | 313.0 | 194.0 | 323.0 | 182.0 | 257.0 | 231.0 | 219.0 | 264.0 | 51595.00 | 40889.00 | 29299.0 | 22397.0 | 21394.0 | 40397.50 | 29796.0 | 29494.00 | 17998.0 | 9097.0 | 69500.0 | 98250.0 | 220075.0 | 92375.0 | 147720.0 | 136095.0 | 172675.0 | 159525.0 | 94750.0 | 116925.0 |
| AAQ-AER | оффлайн | регистрация | региональный | 3.0 | 2.0 | 1.0 | 1.0 | 0.0 | 3.0 | 1.0 | 2.0 | 5.0 | 3.0 | 39.0 | 46.0 | 38.0 | 40.0 | 50.0 | 69.0 | 46.0 | 56.0 | 56.0 | 69.0 | 7400.00 | 4800.00 | 2800.0 | 2800.0 | 0.0 | 7400.00 | 2300.0 | 4800.00 | 15800.0 | 7400.0 | 18750.0 | 19500.0 | 13500.0 | 22500.0 | 24940.0 | 33345.0 | 22625.0 | 30625.0 | 18750.0 | 23325.0 |
| AAQ-HMA | онлайн | букинг | региональный | 5.0 | 8.0 | 4.0 | 6.0 | 14.0 | 7.0 | 7.0 | 4.0 | 1.0 | 0.0 | 43.0 | 125.0 | 108.0 | 120.0 | 256.0 | 162.0 | 78.0 | 62.0 | 39.0 | 48.0 | 11097.33 | 17493.00 | 7797.0 | 16496.5 | 33789.0 | 15493.83 | 13493.0 | 8996.33 | 1499.0 | 0.0 | 97850.0 | 270000.0 | 244700.0 | 194325.0 | 486950.0 | 285675.0 | 122400.0 | 136325.0 | 62275.0 | 91975.0 |
| AAQ-HMA | онлайн | регистрация | региональный | NaN | NaN | NaN | NaN | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | NaN | NaN | NaN | NaN | 2.0 | 2.0 | 4.0 | 2.0 | 2.0 | 1.0 | NaN | NaN | NaN | NaN | 0.0 | 0.00 | 0.0 | 0.00 | 0.0 | 3500.0 | NaN | NaN | NaN | NaN | 2200.0 | 0.0 | 4400.0 | 0.0 | 0.0 | 2200.0 |
| AAQ-HMA | оффлайн | букинг | региональный | 0.0 | 0.0 | 0.0 | 0.0 | 3.0 | 1.0 | 3.0 | 1.0 | 0.0 | 0.0 | 64.0 | 92.0 | 63.0 | 81.0 | 115.0 | 213.0 | 112.0 | 61.0 | 42.0 | 82.0 | 0.00 | 0.00 | 0.0 | 0.0 | 6298.0 | 2000.00 | 7600.0 | 1499.00 | 0.0 | 0.0 | 178305.0 | 226085.0 | 152730.0 | 221750.0 | 305040.0 | 500625.0 | 263935.0 | 106425.0 | 94300.0 | 110450.0 |
def srez_pereschet(exemple_df, label, value, group_cols):
#exemple_df = income_dolya_bag_nac.iloc[:,[0,1,2,3,4,5,6,7,8,9,10,11,12,18,19,20,21,22,28,29,30,31,32]]
exemple_df = exemple_df[(exemple_df[label] == value)].groupby(group_cols).sum()
exemple_df.shape
for i in range(count_weeks):
exemple_df['db{}'.format(i+18)] = 0
exemple_df.iloc[:, len(exemple_df.columns)-1] = exemple_df.iloc[:,i]/exemple_df.iloc[:,i+count_weeks]
for i in range(count_weeks):
exemple_df['mb{}'.format(i+18)] = 0
exemple_df.iloc[:, len(exemple_df.columns)-1] = exemple_df.iloc[:,i+count_weeks*2]/exemple_df.iloc[:,i+count_weeks]
for i in range(count_weeks):
exemple_df['mn{}'.format(i+18)] = 0
exemple_df.iloc[:, len(exemple_df.columns)-1] = exemple_df.iloc[:,i+count_weeks*3]/exemple_df.iloc[:,i+count_weeks]
# exemple_df.iloc[:,i+len(count_weeks)*3]/exemple_df.iloc[:,i+count_weeks]
exemple_df.iloc[:,count_weeks*4:count_weeks*5] = exemple_df.iloc[:,count_weeks*4:count_weeks*5].round(4)*100
exemple_df.iloc[:,0:count_weeks*4] = exemple_df.iloc[:,0:count_weeks*4].round(1)
exemple_df.iloc[:,count_weeks*5:count_weeks*7] = exemple_df.iloc[:,count_weeks*5:count_weeks*7].round(2)
exemple_df.iloc[:,count_weeks*5:count_weeks*7] = exemple_df.iloc[:,count_weeks*5:count_weeks*7].fillna(0)
return exemple_df
# [((df_offline['Маршрут']=='MSQ-VKO')|
# (df_offline['Маршрут']=='DXB-GRV')|
# (df_offline['Маршрут']=='EVN-VKO')|
# (df_offline['Маршрут']=='EZV-TJM')|
# (df_offline['Маршрут']=='EYK-TJM')|
# (df_offline['Маршрут']=='OVS-TJM')|
# (df_offline['Маршрут']=='HMA-TJM')|
# (df_offline['Маршрут']=='DYR-VKO')|
# (df_offline['Маршрут']=='KGP-VKO')|
# (df_offline['Маршрут']=='HMA-VKO')|
# (df_offline['Маршрут']=='KJA-VKO')|
# (df_offline['Маршрут']=='IKT-VKO')|
# (df_offline['Маршрут']=='SGC-VKO')|
# (df_offline['Маршрут']=='TJM-VKO')|
# (df_offline['Маршрут']=='SCW-VKO')|
# (df_offline['Маршрут']=='NOJ-VKO'))]
# df_offline
# Использование cufflinks в офлайн-режиме
import cufflinks
cufflinks.go_offline()
# Настройка глобальной темы cufflinks
cufflinks.set_config_file(world_readable=True, theme='pearl', offline=True)
exemple
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 18_x | 19_x | 20_x | 21_x | 22_x | 23_x | 24_x | 25_x | 26_x | 27_x | 18_y | 19_y | 20_y | 21_y | 22_y | 23_y | 24_y | 25_y | 26_y | 27_y | 18_x | 19_x | 20_x | 21_x | 22_x | 23_x | 24_x | 25_x | 26_x | 27_x | 18_y | 19_y | 20_y | 21_y | 22_y | 23_y | 24_y | 25_y | 26_y | 27_y |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | |||||||||||||||||||||||||||||||||||||||||||
| AAQ-AER | онлайн | букинг | региональный | 52.0 | 34.0 | 38.0 | 46.0 | 29.0 | 50.0 | 40.0 | 17.0 | 21.0 | 12.0 | 585.0 | 456.0 | 521.0 | 477.0 | 521.0 | 618.0 | 485.0 | 465.0 | 368.0 | 436.0 | 101462.00 | 65675.33 | 75171.0 | 97268.5 | 64679.0 | 103159.00 | 87479.5 | 32889.50 | 40282.0 | 21590.0 | 203000.0 | 151375.0 | 175000.0 | 171000.0 | 231125.0 | 231375.0 | 227000.0 | 191250.0 | 193875.0 | 177050.0 |
| AAQ-AER | онлайн | регистрация | региональный | 1.0 | 3.0 | 5.0 | 8.0 | 4.0 | 9.0 | 6.0 | 2.0 | 5.0 | 4.0 | 70.0 | 77.0 | 97.0 | 91.0 | 98.0 | 111.0 | 96.0 | 98.0 | 76.0 | 112.0 | 3000.00 | 6500.00 | 13100.0 | 18199.0 | 10000.0 | 22200.00 | 13299.0 | 5800.00 | 12400.0 | 9500.0 | 29000.0 | 28125.0 | 29125.0 | 21000.0 | 23250.0 | 25125.0 | 14125.0 | 43500.0 | 25750.0 | 40175.0 |
| AAQ-AER | оффлайн | букинг | региональный | 22.0 | 17.0 | 11.0 | 11.0 | 10.0 | 16.0 | 13.0 | 14.0 | 8.0 | 5.0 | 219.0 | 194.0 | 313.0 | 194.0 | 323.0 | 182.0 | 257.0 | 231.0 | 219.0 | 264.0 | 51595.00 | 40889.00 | 29299.0 | 22397.0 | 21394.0 | 40397.50 | 29796.0 | 29494.00 | 17998.0 | 9097.0 | 69500.0 | 98250.0 | 220075.0 | 92375.0 | 147720.0 | 136095.0 | 172675.0 | 159525.0 | 94750.0 | 116925.0 |
| AAQ-AER | оффлайн | регистрация | региональный | 3.0 | 2.0 | 1.0 | 1.0 | 0.0 | 3.0 | 1.0 | 2.0 | 5.0 | 3.0 | 39.0 | 46.0 | 38.0 | 40.0 | 50.0 | 69.0 | 46.0 | 56.0 | 56.0 | 69.0 | 7400.00 | 4800.00 | 2800.0 | 2800.0 | 0.0 | 7400.00 | 2300.0 | 4800.00 | 15800.0 | 7400.0 | 18750.0 | 19500.0 | 13500.0 | 22500.0 | 24940.0 | 33345.0 | 22625.0 | 30625.0 | 18750.0 | 23325.0 |
| AAQ-HMA | онлайн | букинг | региональный | 5.0 | 8.0 | 4.0 | 6.0 | 14.0 | 7.0 | 7.0 | 4.0 | 1.0 | 0.0 | 43.0 | 125.0 | 108.0 | 120.0 | 256.0 | 162.0 | 78.0 | 62.0 | 39.0 | 48.0 | 11097.33 | 17493.00 | 7797.0 | 16496.5 | 33789.0 | 15493.83 | 13493.0 | 8996.33 | 1499.0 | 0.0 | 97850.0 | 270000.0 | 244700.0 | 194325.0 | 486950.0 | 285675.0 | 122400.0 | 136325.0 | 62275.0 | 91975.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| USK-VKO | оффлайн | регистрация | московский | 4.0 | 3.0 | 11.0 | 3.0 | 7.0 | 8.0 | 3.0 | 4.0 | 1.0 | 12.0 | 51.0 | 63.0 | 124.0 | 90.0 | 80.0 | 80.0 | 80.0 | 106.0 | 42.0 | 79.0 | 19600.00 | 8100.00 | 33300.0 | 9100.0 | 24000.0 | 23600.00 | 10500.0 | 11100.00 | 3000.0 | 34600.0 | 108375.0 | 136325.0 | 313375.0 | 230075.0 | 173256.0 | 238050.0 | 185830.0 | 289961.0 | 110695.0 | 265981.0 |
| VIE-VKO | онлайн | букинг | московский | 0.0 | 0.0 | 0.0 | NaN | 0.0 | 0.0 | NaN | NaN | NaN | NaN | 4.0 | 1.0 | 1.0 | NaN | 5.0 | 4.0 | NaN | NaN | NaN | NaN | 0.00 | 0.00 | 0.0 | NaN | 0.0 | 0.00 | NaN | NaN | NaN | NaN | 5250.0 | 4000.0 | 1500.0 | NaN | 4500.0 | 4500.0 | NaN | NaN | NaN | NaN |
| VIE-VKO | оффлайн | букинг | московский | 0.0 | NaN | NaN | NaN | NaN | 0.0 | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | 4.0 | NaN | NaN | NaN | NaN | 0.00 | NaN | NaN | NaN | NaN | 0.00 | NaN | NaN | NaN | NaN | 1500.0 | NaN | NaN | NaN | NaN | 3000.0 | NaN | NaN | NaN | NaN |
| VKO-ZNZ | онлайн | букинг | московский | NaN | NaN | 0.0 | NaN | NaN | 0.0 | NaN | NaN | 0.0 | 0.0 | NaN | NaN | 1.0 | NaN | NaN | 3.0 | NaN | NaN | 2.0 | 1.0 | NaN | NaN | 0.0 | NaN | NaN | 0.00 | NaN | NaN | 0.0 | 0.0 | NaN | NaN | 6000.0 | NaN | NaN | 5670.0 | NaN | NaN | 10500.0 | 2700.0 |
| VKO-ZNZ | оффлайн | букинг | московский | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.00 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 | NaN | NaN |
651 rows × 43 columns
count_weeks = 10
# srez_pereschet(exemple_df, label, value, group_cols)
df_offline = srez_pereschet(exemple,'онлайн_оффлайн', 'оффлайн',['Маршрут','Московский_Региональный'])
df_offline = df_offline.sort_values('db18',ascending=False).reset_index().set_index('Маршрут')
df_offline = df_offline.reset_index()
df_offline = df_offline[((df_offline['Маршрут']=='MSQ-VKO')|
(df_offline['Маршрут']=='DXB-GRV')|
(df_offline['Маршрут']=='EVN-VKO')|
(df_offline['Маршрут']=='EZV-TJM')|
(df_offline['Маршрут']=='EYK-TJM')|
(df_offline['Маршрут']=='OVS-TJM')|
(df_offline['Маршрут']=='HMA-TJM')|
(df_offline['Маршрут']=='DYR-VKO')|
(df_offline['Маршрут']=='KGP-VKO')|
(df_offline['Маршрут']=='HMA-VKO')|
(df_offline['Маршрут']=='KJA-VKO')|
(df_offline['Маршрут']=='IKT-VKO')|
(df_offline['Маршрут']=='SGC-VKO')|
(df_offline['Маршрут']=='TJM-VKO')|
(df_offline['Маршрут']=='SCW-VKO')|
(df_offline['Маршрут']=='NOJ-VKO'))]
df_offline = df_offline.drop(columns = df_offline.iloc[:,[i for i in range(1,count_weeks*4+1)]])
df_offline['color'] = [i for i in range(len(df_offline))]
df_offline
import plotly.graph_objects as go
df = df_offline
fig = go.Figure(data=
go.Parcoords(
line = dict(color = df['color'],
colorscale = 'rainbow',
showscale = True),
dimensions = [dict(tickvals = [i for i in range(len(df))],
ticktext = df['Маршрут'].values,
label = 'Маршрут',
values = [i for i in range(len(df))])] +\
[dict(range = [0,63],label = "{}".format(i),values = df[i]) for i in df.columns[1:count_weeks+1]] +\
[dict(range = [0,1550],label = "{}".format(i),values = df[i]) for i in df.columns[count_weeks+1:count_weeks*2+1]] +\
[dict(range = [0,3600],label = "{}".format(i),values = df[i]) for i in df.columns[count_weeks*2+1:count_weeks*3+1]]))
fig.update_layout(
plot_bgcolor = 'white',
paper_bgcolor = 'white',
autosize=False,
height=900,
width=1600
)
fig.show()
df
| Неделя эксперимента | Маршрут | db18 | db19 | db20 | db21 | db22 | db23 | db24 | db25 | db26 | db27 | mb18 | mb19 | mb20 | mb21 | mb22 | mb23 | mb24 | mb25 | mb26 | mb27 | mn18 | mn19 | mn20 | mn21 | mn22 | mn23 | mn24 | mn25 | mn26 | mn27 | color |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | EZV-TJM | 55.32 | 56.72 | 62.07 | 54.00 | 39.19 | 47.06 | 36.00 | 32.14 | 38.10 | 35.71 | 1403.77 | 1442.85 | 1520.23 | 1355.54 | 972.64 | 1126.03 | 819.64 | 767.54 | 761.55 | 964.02 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0 |
| 4 | EYK-TJM | 45.69 | 34.94 | 39.71 | 38.55 | 45.19 | 54.07 | 33.94 | 30.28 | 34.85 | 38.10 | 1085.81 | 864.18 | 957.74 | 950.29 | 1106.33 | 1315.06 | 835.50 | 749.30 | 823.99 | 913.91 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1 |
| 5 | OVS-TJM | 43.14 | 35.14 | 31.58 | 23.68 | 16.95 | 28.57 | 20.00 | 25.81 | 20.45 | 5.26 | 1125.25 | 816.03 | 841.98 | 739.45 | 362.61 | 749.87 | 478.54 | 535.34 | 495.35 | 105.22 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 2 |
| 8 | HMA-TJM | 18.41 | 32.01 | 33.25 | 22.10 | 30.99 | 32.75 | 29.18 | 31.17 | 31.55 | 28.64 | 451.23 | 813.03 | 863.96 | 545.36 | 782.07 | 832.33 | 729.30 | 786.04 | 788.88 | 719.19 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 3 |
| 9 | DXB-GRV | 14.41 | 1.92 | 3.39 | 7.69 | 7.69 | 6.71 | 14.04 | 11.86 | 0.00 | 0.00 | 497.39 | 78.32 | 129.66 | 270.45 | 294.79 | 262.84 | 551.40 | 412.12 | 0.00 | 0.00 | 1105.41 | 893.27 | 1165.25 | 987.18 | 1130.77 | 1273.78 | 1151.75 | 1423.73 | 1603.45 | 1769.23 | 4 |
| 17 | DYR-VKO | 9.47 | 5.98 | 4.93 | 4.10 | 4.20 | 6.95 | 6.16 | 6.86 | 11.02 | 7.03 | 289.67 | 176.06 | 120.85 | 121.74 | 118.17 | 175.01 | 178.06 | 133.71 | 218.50 | 151.87 | 3007.69 | 3542.27 | 3381.49 | 3205.89 | 2592.18 | 3028.08 | 2899.61 | 3157.44 | 3038.59 | 2541.34 | 5 |
| 32 | MSQ-VKO | 7.14 | 9.22 | 10.55 | 11.54 | 10.60 | 8.02 | 7.60 | 4.71 | 4.34 | 3.49 | 168.37 | 237.18 | 241.95 | 297.40 | 288.13 | 142.85 | 144.17 | 106.27 | 116.98 | 79.08 | 956.70 | 1835.54 | 1509.08 | 1886.98 | 1695.81 | 1450.31 | 1499.46 | 1396.68 | 1407.19 | 1174.95 | 6 |
| 47 | TJM-VKO | 5.62 | 3.56 | 2.86 | 3.59 | 2.77 | 3.74 | 4.82 | 3.50 | 2.70 | 2.13 | 133.09 | 87.00 | 69.98 | 97.26 | 71.18 | 92.92 | 127.76 | 88.12 | 71.16 | 52.08 | 476.35 | 607.47 | 666.94 | 647.68 | 725.02 | 742.11 | 619.50 | 755.08 | 738.65 | 821.93 | 7 |
| 55 | HMA-VKO | 5.37 | 4.74 | 1.75 | 1.68 | 2.36 | 2.16 | 3.12 | 2.69 | 2.36 | 1.51 | 135.03 | 123.22 | 47.66 | 42.31 | 64.06 | 58.47 | 77.54 | 69.18 | 60.62 | 32.75 | 1264.50 | 1622.55 | 1686.48 | 1571.83 | 1485.97 | 1774.79 | 1750.53 | 1829.12 | 2106.15 | 1869.20 | 8 |
| 60 | NOJ-VKO | 5.11 | 5.33 | 3.65 | 5.53 | 3.90 | 3.49 | 3.28 | 4.94 | 3.40 | 1.35 | 138.91 | 141.84 | 94.80 | 148.95 | 95.50 | 83.81 | 89.92 | 131.89 | 94.75 | 33.10 | 1349.43 | 1537.66 | 1859.16 | 1619.54 | 1793.16 | 1715.86 | 1779.38 | 1684.26 | 1818.89 | 1731.90 | 9 |
| 65 | KGP-VKO | 4.76 | 2.55 | 10.81 | 3.59 | 4.71 | 2.38 | 0.95 | 2.67 | 2.94 | 1.33 | 123.80 | 72.62 | 264.80 | 84.52 | 126.24 | 67.86 | 23.81 | 64.16 | 51.45 | 77.64 | 995.66 | 1278.63 | 1365.64 | 1415.54 | 1221.06 | 1266.63 | 1074.98 | 1323.96 | 1116.72 | 2444.67 | 10 |
| 68 | KJA-VKO | 4.65 | 4.36 | 5.09 | 6.01 | 4.34 | 2.64 | 4.89 | 5.09 | 3.52 | 1.94 | 119.96 | 116.68 | 121.03 | 145.25 | 108.19 | 64.02 | 125.78 | 128.67 | 80.65 | 50.08 | 872.56 | 875.55 | 852.21 | 637.46 | 792.15 | 831.40 | 866.64 | 958.95 | 1160.45 | 1281.12 | 11 |
| 71 | SGC-VKO | 4.46 | 3.68 | 3.87 | 3.51 | 3.14 | 3.01 | 3.16 | 2.87 | 2.00 | 2.23 | 116.24 | 92.77 | 103.00 | 86.58 | 79.41 | 76.35 | 78.83 | 69.10 | 50.90 | 58.57 | 869.48 | 902.55 | 1007.13 | 958.07 | 912.75 | 906.46 | 825.72 | 934.19 | 1055.36 | 1082.31 | 12 |
| 101 | SCW-VKO | 2.95 | 3.66 | 1.80 | 3.44 | 2.59 | 2.77 | 2.29 | 2.33 | 2.47 | 2.44 | 97.51 | 90.65 | 48.12 | 93.40 | 70.09 | 72.50 | 61.33 | 63.83 | 66.96 | 61.50 | 1051.52 | 928.85 | 985.11 | 951.54 | 997.61 | 976.10 | 863.05 | 944.79 | 999.53 | 951.55 | 13 |
| 146 | IKT-VKO | 0.00 | 5.62 | 9.43 | 5.19 | 2.55 | 2.43 | 6.05 | 6.81 | 3.59 | 1.10 | 0.00 | 117.93 | 174.44 | 129.58 | 53.50 | 52.63 | 149.72 | 188.54 | 79.83 | 31.99 | 765.77 | 978.93 | 731.13 | 771.30 | 1021.34 | 847.27 | 769.97 | 884.39 | 808.27 | 1033.50 | 14 |
# srez_pereschet(exemple_df, label, value, group_cols)
df_online = srez_pereschet(exemple,'онлайн_оффлайн', 'онлайн',['Маршрут','Московский_Региональный'])
df_online
df_online = df_online.sort_values('db18',ascending=False).reset_index().set_index('Маршрут')
df_online = df_online.reset_index()
df_online = df_online[((df_online['Маршрут']=='MSQ-VKO')|
(df_online['Маршрут']=='DXB-GRV')|
(df_online['Маршрут']=='EVN-VKO')|
(df_online['Маршрут']=='EZV-TJM')|
(df_online['Маршрут']=='EYK-TJM')|
(df_online['Маршрут']=='OVS-TJM')|
(df_online['Маршрут']=='HMA-TJM')|
(df_online['Маршрут']=='DYR-VKO')|
(df_online['Маршрут']=='KGP-VKO')|
(df_online['Маршрут']=='HMA-VKO')|
(df_online['Маршрут']=='KJA-VKO')|
(df_online['Маршрут']=='IKT-VKO')|
(df_online['Маршрут']=='SGC-VKO')|
(df_online['Маршрут']=='TJM-VKO')|
(df_online['Маршрут']=='SCW-VKO')|
(df_online['Маршрут']=='NOJ-VKO'))]
df_online = df_online.drop(columns = df_online.iloc[:,[i for i in range(1,count_weeks*4+1)]])
import plotly.graph_objects as go
df = df_online
df['color'] = [i for i in range(len(df))]
fig = go.Figure(data=
go.Parcoords(
line = dict(color = df['color'],
colorscale = 'rainbow',
showscale = True),
dimensions = [dict(tickvals = [i for i in range(len(df))],
ticktext = df['Маршрут'].values,
label = 'Маршрут',
values = [i for i in range(len(df))])] +\
[dict(range = [0,53],label = "{}".format(i),values = df[i]) for i in df.columns[1:count_weeks+1]] +\
[dict(range = [0,1200],label = "{}".format(i),values = df[i]) for i in df.columns[count_weeks+1:count_weeks*2+1]] +\
[dict(range = [0,3400],label = "{}".format(i),values = df[i]) for i in df.columns[count_weeks*2+1:count_weeks*3+1]]))
fig.update_layout(
plot_bgcolor = 'white',
paper_bgcolor = 'white',
autosize=False,
height=900,
width=1600
)
fig.show()
df_online
| Неделя эксперимента | Маршрут | db18 | db19 | db20 | db21 | db22 | db23 | db24 | db25 | db26 | db27 | mb18 | mb19 | mb20 | mb21 | mb22 | mb23 | mb24 | mb25 | mb26 | mb27 | mn18 | mn19 | mn20 | mn21 | mn22 | mn23 | mn24 | mn25 | mn26 | mn27 | color |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | EZV-TJM | 44.30 | 40.24 | 41.61 | 49.61 | 45.67 | 44.44 | 41.54 | 22.92 | 42.42 | 35.71 | 1005.34 | 914.41 | 949.26 | 1163.92 | 1057.87 | 978.20 | 1007.31 | 531.06 | 999.58 | 785.37 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0 |
| 4 | OVS-TJM | 42.31 | 25.49 | 25.22 | 30.99 | 39.13 | 32.67 | 33.01 | 31.91 | 36.78 | 22.54 | 905.46 | 603.73 | 554.57 | 668.80 | 837.08 | 708.65 | 744.38 | 678.45 | 741.05 | 506.83 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1 |
| 6 | EYK-TJM | 30.05 | 41.95 | 41.45 | 34.51 | 39.57 | 33.16 | 35.80 | 34.44 | 26.97 | 30.51 | 713.74 | 958.84 | 933.33 | 799.70 | 925.31 | 756.53 | 774.12 | 791.07 | 588.52 | 694.63 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 2 |
| 9 | HMA-TJM | 18.50 | 21.07 | 19.10 | 19.67 | 20.98 | 24.02 | 21.63 | 24.74 | 19.86 | 21.63 | 387.79 | 444.65 | 427.73 | 443.70 | 456.91 | 511.27 | 471.02 | 537.23 | 437.82 | 460.71 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 3 |
| 11 | MSQ-VKO | 16.77 | 15.94 | 13.46 | 17.24 | 15.92 | 10.84 | 9.92 | 12.54 | 7.52 | 5.96 | 447.69 | 481.97 | 333.99 | 550.43 | 464.11 | 354.20 | 246.57 | 325.47 | 186.72 | 150.24 | 916.23 | 1432.21 | 1036.70 | 1266.26 | 1625.86 | 1329.83 | 979.08 | 709.30 | 863.57 | 1053.71 | 4 |
| 26 | KGP-VKO | 10.40 | 8.44 | 5.07 | 6.28 | 3.07 | 7.99 | 4.88 | 6.85 | 5.03 | 6.82 | 218.96 | 180.00 | 110.61 | 142.70 | 64.06 | 178.30 | 98.28 | 141.96 | 110.03 | 142.85 | 874.23 | 805.37 | 1004.82 | 960.47 | 1154.29 | 832.12 | 1038.93 | 744.75 | 945.39 | 952.92 | 5 |
| 33 | DXB-GRV | 9.09 | 12.15 | 16.79 | 12.36 | 12.21 | 10.40 | 9.94 | 10.62 | 13.59 | 4.00 | 264.55 | 382.06 | 611.56 | 494.66 | 433.78 | 355.95 | 355.34 | 369.42 | 464.30 | 140.00 | 1418.18 | 1681.31 | 1397.71 | 1564.04 | 1487.79 | 1132.37 | 1420.50 | 1717.70 | 1176.70 | 1630.00 | 6 |
| 36 | KJA-VKO | 8.89 | 6.38 | 7.79 | 6.64 | 7.80 | 7.46 | 5.38 | 6.38 | 5.17 | 3.86 | 181.98 | 136.58 | 166.06 | 131.82 | 159.19 | 157.35 | 125.38 | 137.81 | 110.97 | 75.26 | 604.42 | 532.56 | 599.60 | 539.74 | 506.84 | 501.72 | 579.92 | 617.89 | 763.36 | 752.14 | 7 |
| 37 | NOJ-VKO | 8.24 | 10.07 | 9.27 | 9.02 | 6.91 | 5.81 | 7.16 | 4.98 | 8.12 | 3.91 | 179.64 | 209.77 | 200.07 | 203.66 | 155.62 | 130.62 | 166.68 | 109.62 | 184.06 | 80.22 | 998.69 | 1159.96 | 1328.85 | 1313.20 | 1406.00 | 1275.12 | 1228.02 | 1177.87 | 1279.83 | 1622.17 | 8 |
| 55 | IKT-VKO | 7.21 | 6.00 | 5.76 | 9.42 | 4.52 | 7.35 | 8.22 | 5.89 | 5.59 | 5.05 | 170.78 | 119.94 | 113.12 | 212.92 | 89.05 | 161.66 | 177.77 | 120.95 | 118.19 | 95.39 | 814.66 | 998.75 | 838.48 | 929.37 | 939.49 | 882.26 | 799.03 | 909.37 | 821.84 | 712.44 | 9 |
| 58 | HMA-VKO | 7.06 | 8.44 | 5.48 | 5.67 | 6.57 | 8.18 | 6.07 | 2.63 | 4.35 | 5.07 | 158.06 | 185.78 | 116.09 | 139.27 | 159.14 | 199.06 | 138.16 | 58.17 | 88.71 | 109.20 | 805.58 | 1085.17 | 1162.96 | 1053.61 | 1321.43 | 1235.65 | 1482.02 | 1382.27 | 1602.82 | 1494.84 | 10 |
| 68 | SCW-VKO | 6.62 | 4.37 | 4.80 | 5.99 | 5.04 | 4.11 | 4.31 | 2.98 | 4.02 | 3.32 | 143.29 | 97.24 | 102.71 | 123.24 | 110.15 | 89.36 | 96.10 | 67.97 | 87.98 | 70.36 | 495.01 | 607.26 | 605.16 | 589.66 | 632.12 | 617.51 | 609.74 | 723.02 | 543.25 | 590.26 | 11 |
| 70 | SGC-VKO | 6.47 | 7.32 | 6.31 | 6.21 | 5.10 | 6.16 | 5.64 | 5.82 | 5.52 | 3.94 | 142.73 | 156.64 | 132.74 | 135.13 | 111.07 | 130.77 | 118.20 | 124.75 | 116.63 | 83.87 | 569.35 | 615.44 | 665.06 | 676.22 | 656.46 | 609.53 | 625.04 | 652.22 | 662.17 | 695.15 | 12 |
| 88 | DYR-VKO | 5.28 | 11.87 | 12.17 | 15.43 | 12.50 | 7.32 | 7.72 | 14.29 | 8.44 | 2.28 | 141.90 | 318.95 | 331.82 | 411.67 | 363.47 | 202.00 | 230.55 | 511.02 | 206.46 | 49.30 | 2504.95 | 3293.99 | 3354.09 | 3210.88 | 3293.44 | 2956.25 | 2715.13 | 2735.78 | 2920.70 | 3210.16 | 13 |
| 103 | TJM-VKO | 4.58 | 4.49 | 4.13 | 3.64 | 4.35 | 4.11 | 3.78 | 3.41 | 3.39 | 2.96 | 94.98 | 94.90 | 92.23 | 79.24 | 89.49 | 90.35 | 80.52 | 73.03 | 72.74 | 60.52 | 346.00 | 377.85 | 378.57 | 403.84 | 366.67 | 466.82 | 420.05 | 427.72 | 454.83 | 411.79 | 14 |
# srez_pereschet(exemple_df, label, value, group_cols)
df_booking = srez_pereschet(exemple,'букинг_регистрация', 'букинг',['Маршрут','Московский_Региональный'])
df_booking
df_booking = df_booking.sort_values('db18',ascending=False).reset_index().set_index('Маршрут')
df_booking = df_booking.reset_index()
df_booking = df_booking[((df_booking['Маршрут']=='MSQ-VKO')|
(df_booking['Маршрут']=='DXB-GRV')|
(df_booking['Маршрут']=='EVN-VKO')|
(df_booking['Маршрут']=='EZV-TJM')|
(df_booking['Маршрут']=='EYK-TJM')|
(df_booking['Маршрут']=='OVS-TJM')|
(df_booking['Маршрут']=='HMA-TJM')|
(df_booking['Маршрут']=='DYR-VKO')|
(df_booking['Маршрут']=='KGP-VKO')|
(df_booking['Маршрут']=='HMA-VKO')|
(df_booking['Маршрут']=='KJA-VKO')|
(df_booking['Маршрут']=='IKT-VKO')|
(df_booking['Маршрут']=='SGC-VKO')|
(df_booking['Маршрут']=='TJM-VKO')|
(df_booking['Маршрут']=='SCW-VKO')|
(df_booking['Маршрут']=='NOJ-VKO'))]
df_booking = df_booking.drop(columns = df_booking.iloc[:,[i for i in range(1,count_weeks*4+1)]])
import plotly.graph_objects as go
df = df_booking
df['color'] = [i for i in range(len(df))]
fig = go.Figure(data=
go.Parcoords(
line = dict(color = df['color'],
colorscale = 'rainbow',
showscale = True),
dimensions = [dict(tickvals = [i for i in range(len(df))],
ticktext = df['Маршрут'].values,
label = 'Маршрут',
values = [i for i in range(len(df))])] +\
[dict(range = [0,53],label = "{}".format(i),values = df[i]) for i in df.columns[1:count_weeks+1]] +\
[dict(range = [0,1300],label = "{}".format(i),values = df[i]) for i in df.columns[count_weeks+1:count_weeks*2+1]] +\
[dict(range = [0,3600],label = "{}".format(i),values = df[i]) for i in df.columns[count_weeks*2+1:count_weeks*3+1]]))
fig.update_layout(
plot_bgcolor = 'white',
paper_bgcolor = 'white',
autosize=False,
height=900,
width=1600
)
fig.show()
df
| Неделя эксперимента | Маршрут | db18 | db19 | db20 | db21 | db22 | db23 | db24 | db25 | db26 | db27 | mb18 | mb19 | mb20 | mb21 | mb22 | mb23 | mb24 | mb25 | mb26 | mb27 | mn18 | mn19 | mn20 | mn21 | mn22 | mn23 | mn24 | mn25 | mn26 | mn27 | color |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | EZV-TJM | 48.72 | 45.85 | 47.34 | 52.63 | 42.49 | 47.19 | 43.21 | 27.94 | 47.83 | 38.89 | 1134.98 | 1083.87 | 1105.97 | 1256.86 | 988.73 | 1073.15 | 1036.62 | 639.44 | 1064.75 | 888.52 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0 |
| 4 | OVS-TJM | 43.56 | 30.72 | 28.40 | 30.67 | 32.34 | 30.82 | 27.27 | 29.49 | 31.54 | 16.67 | 1034.38 | 716.67 | 671.41 | 696.74 | 690.77 | 715.50 | 619.67 | 621.57 | 663.59 | 370.22 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1 |
| 5 | EYK-TJM | 37.41 | 39.68 | 42.47 | 35.81 | 42.14 | 42.09 | 34.78 | 33.20 | 29.36 | 34.70 | 886.03 | 928.55 | 972.53 | 851.77 | 999.25 | 991.37 | 787.37 | 778.65 | 651.66 | 812.45 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 2 |
| 8 | HMA-TJM | 20.00 | 27.26 | 24.19 | 21.71 | 26.04 | 28.36 | 25.03 | 28.32 | 23.49 | 23.84 | 421.07 | 613.32 | 558.36 | 493.13 | 600.23 | 641.22 | 569.45 | 639.60 | 534.79 | 527.19 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 3 |
| 11 | DXB-GRV | 13.14 | 7.73 | 11.71 | 11.89 | 10.64 | 9.54 | 12.50 | 11.38 | 7.78 | 2.90 | 431.89 | 245.86 | 429.80 | 455.38 | 384.39 | 344.36 | 473.57 | 395.57 | 265.68 | 101.45 | 1282.29 | 1431.49 | 1320.27 | 1400.00 | 1364.44 | 1188.82 | 1341.53 | 1593.41 | 1376.11 | 1789.86 | 4 |
| 16 | MSQ-VKO | 10.87 | 12.20 | 10.92 | 14.33 | 12.98 | 9.13 | 9.04 | 8.13 | 5.71 | 4.23 | 297.96 | 337.95 | 264.82 | 419.20 | 363.55 | 247.71 | 204.47 | 195.79 | 152.94 | 104.89 | 936.17 | 1620.02 | 1326.30 | 1548.31 | 1621.68 | 1374.23 | 1262.49 | 1092.74 | 1113.70 | 1104.43 | 5 |
| 25 | KGP-VKO | 9.06 | 7.02 | 6.87 | 5.36 | 3.81 | 6.13 | 3.66 | 5.66 | 3.79 | 5.04 | 195.84 | 154.36 | 155.23 | 120.69 | 89.06 | 141.04 | 73.96 | 119.26 | 75.96 | 123.48 | 911.38 | 966.64 | 1122.46 | 1142.81 | 1183.50 | 980.80 | 1035.18 | 935.57 | 1004.40 | 1498.79 | 6 |
| 29 | KJA-VKO | 8.75 | 5.94 | 6.69 | 6.61 | 6.75 | 5.83 | 4.80 | 5.72 | 4.22 | 2.85 | 188.58 | 133.89 | 142.45 | 138.24 | 142.28 | 123.47 | 112.59 | 128.36 | 89.16 | 54.31 | 688.99 | 664.26 | 704.67 | 563.86 | 595.22 | 628.13 | 697.25 | 760.26 | 924.83 | 1020.27 | 7 |
| 35 | NOJ-VKO | 7.67 | 8.20 | 6.95 | 7.72 | 6.09 | 4.93 | 5.50 | 4.95 | 6.36 | 2.90 | 176.96 | 179.69 | 152.76 | 181.82 | 140.53 | 111.30 | 130.14 | 116.86 | 147.59 | 60.39 | 1096.44 | 1315.64 | 1534.29 | 1418.55 | 1569.82 | 1470.38 | 1428.13 | 1402.38 | 1477.61 | 1680.50 | 8 |
| 51 | HMA-VKO | 6.74 | 7.03 | 4.01 | 3.88 | 4.72 | 5.64 | 4.81 | 2.15 | 3.02 | 3.54 | 153.43 | 158.46 | 88.53 | 94.40 | 117.55 | 137.96 | 110.32 | 49.45 | 63.99 | 74.98 | 954.87 | 1339.09 | 1427.65 | 1324.01 | 1432.43 | 1539.50 | 1606.19 | 1690.56 | 1868.16 | 1705.24 | 9 |
| 55 | DYR-VKO | 6.44 | 7.39 | 7.51 | 7.32 | 6.80 | 6.61 | 6.40 | 9.72 | 10.09 | 5.56 | 167.15 | 199.20 | 195.69 | 204.49 | 195.58 | 166.17 | 189.56 | 283.41 | 213.67 | 116.52 | 2771.72 | 3460.14 | 3393.82 | 3202.06 | 2920.05 | 3015.55 | 2861.03 | 3028.55 | 3042.14 | 2724.75 | 10 |
| 65 | SGC-VKO | 6.04 | 6.28 | 5.44 | 5.48 | 4.48 | 5.32 | 5.06 | 4.96 | 4.43 | 3.01 | 135.67 | 137.92 | 117.21 | 119.39 | 99.59 | 114.97 | 109.16 | 107.70 | 94.57 | 63.44 | 674.02 | 704.00 | 773.35 | 753.07 | 729.66 | 708.51 | 686.98 | 748.77 | 784.03 | 816.43 | 11 |
| 66 | SCW-VKO | 6.00 | 4.21 | 3.71 | 5.42 | 4.20 | 3.94 | 3.74 | 3.03 | 3.32 | 2.67 | 138.26 | 95.00 | 80.86 | 116.31 | 93.92 | 87.79 | 85.82 | 72.10 | 73.87 | 54.25 | 704.54 | 737.42 | 789.87 | 759.10 | 795.03 | 795.27 | 755.80 | 826.88 | 700.52 | 727.57 | 12 |
| 67 | IKT-VKO | 5.99 | 5.88 | 6.88 | 7.82 | 3.94 | 5.89 | 7.52 | 6.22 | 4.96 | 3.45 | 141.87 | 119.32 | 131.74 | 181.49 | 78.58 | 129.29 | 168.76 | 145.06 | 106.13 | 65.43 | 806.38 | 992.65 | 805.87 | 869.76 | 963.60 | 871.88 | 789.70 | 900.46 | 808.91 | 818.67 | 13 |
| 94 | TJM-VKO | 4.82 | 4.19 | 3.76 | 3.55 | 4.18 | 4.17 | 3.91 | 3.65 | 3.03 | 2.69 | 100.49 | 89.45 | 84.43 | 79.51 | 89.85 | 93.32 | 87.71 | 81.29 | 64.99 | 55.72 | 396.58 | 462.33 | 481.91 | 490.59 | 490.11 | 573.49 | 504.73 | 560.93 | 552.64 | 543.91 | 14 |
# srez_pereschet(exemple_df, label, value, group_cols)
df_registr = srez_pereschet(exemple,'букинг_регистрация', 'регистрация',['Маршрут','Московский_Региональный'])
df_registr
df_registr = df_registr.sort_values('db18',ascending=False).reset_index().set_index('Маршрут')
df_registr = df_registr.reset_index()
df_registr = df_registr[((df_registr['Маршрут']=='MSQ-VKO')|
(df_registr['Маршрут']=='DXB-GRV')|
(df_registr['Маршрут']=='EVN-VKO')|
(df_registr['Маршрут']=='EZV-TJM')|
(df_registr['Маршрут']=='EYK-TJM')|
(df_registr['Маршрут']=='OVS-TJM')|
(df_registr['Маршрут']=='HMA-TJM')|
(df_registr['Маршрут']=='DYR-VKO')|
(df_registr['Маршрут']=='KGP-VKO')|
(df_registr['Маршрут']=='HMA-VKO')|
(df_registr['Маршрут']=='KJA-VKO')|
(df_registr['Маршрут']=='IKT-VKO')|
(df_registr['Маршрут']=='SGC-VKO')|
(df_registr['Маршрут']=='TJM-VKO')|
(df_registr['Маршрут']=='SCW-VKO')|
(df_registr['Маршрут']=='NOJ-VKO'))]
df_registr = df_registr.drop(columns = df_registr.iloc[:,[i for i in range(1,count_weeks*4+1)]])
import plotly.graph_objects as go
df = df_registr
df['color'] = [i for i in range(len(df))]
fig = go.Figure(data=
go.Parcoords(
line = dict(color = df['color'],
colorscale = 'rainbow',
showscale = True),
dimensions = [dict(tickvals = [i for i in range(len(df))],
ticktext = df['Маршрут'].values,
label = 'Маршрут',
values = [i for i in range(len(df))])] +\
[dict(range = [0,81],label = "{}".format(i),values = df[i]) for i in df.columns[1:count_weeks+1]] +\
[dict(range = [0,3800],label = "{}".format(i),values = df[i]) for i in df.columns[count_weeks+1:count_weeks*2+1]] +\
[dict(range = [0,3800],label = "{}".format(i),values = df[i]) for i in df.columns[count_weeks*2+1:count_weeks*3+1]]))
fig.update_layout(
plot_bgcolor = 'white',
paper_bgcolor = 'white',
autosize=False,
height=900,
width=1600
)
fig.show()
df
| Неделя эксперимента | Маршрут | db18 | db19 | db20 | db21 | db22 | db23 | db24 | db25 | db26 | db27 | mb18 | mb19 | mb20 | mb21 | mb22 | mb23 | mb24 | mb25 | mb26 | mb27 | mn18 | mn19 | mn20 | mn21 | mn22 | mn23 | mn24 | mn25 | mn26 | mn27 | color |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | DYR-VKO | 80.00 | 42.86 | 0.00 | 0.00 | 7.55 | 19.05 | 14.71 | 11.48 | 9.09 | 11.11 | 3800.00 | 1892.86 | 0.00 | 0.00 | 209.43 | 652.38 | 370.59 | 308.20 | 216.36 | 322.22 | 3160.00 | 3678.57 | 1883.16 | 3432.78 | 430.19 | 2666.79 | 2170.59 | 2418.44 | 2330.45 | 2488.33 | 0 |
| 6 | EYK-TJM | 17.39 | 24.00 | 23.33 | 40.00 | 27.27 | 33.33 | 44.44 | 23.08 | 22.22 | 0.00 | 447.83 | 712.00 | 653.33 | 930.00 | 754.55 | 888.89 | 1111.11 | 676.92 | 666.67 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1 |
| 7 | MSQ-VKO | 17.39 | 6.25 | 44.44 | 14.29 | 11.43 | 21.05 | 4.35 | 12.50 | 9.86 | 8.94 | 123.04 | 282.81 | 813.33 | 514.29 | 347.00 | 542.63 | 48.97 | 419.56 | 160.92 | 200.69 | 991.30 | 2775.00 | 1505.56 | 3342.86 | 2100.00 | 1654.74 | 955.11 | 774.75 | 1240.14 | 1181.91 | 2 |
| 10 | HMA-TJM | 12.77 | 13.74 | 20.33 | 16.49 | 15.94 | 17.96 | 14.02 | 19.80 | 26.24 | 23.31 | 343.62 | 371.56 | 575.52 | 446.39 | 417.39 | 494.91 | 371.96 | 559.39 | 726.23 | 666.91 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 3 |
| 11 | EZV-TJM | 10.00 | 14.29 | 57.14 | 12.50 | 62.50 | 0.00 | 11.11 | 12.50 | 0.00 | 16.67 | 350.00 | 428.57 | 1471.43 | 375.00 | 1937.50 | 0.00 | 222.22 | 437.50 | 0.00 | 583.33 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 4 |
| 27 | KGP-VKO | 5.36 | 3.49 | 5.93 | 5.56 | 1.59 | 6.38 | 6.25 | 4.17 | 20.69 | 0.00 | 139.29 | 88.37 | 166.10 | 145.37 | 44.44 | 155.32 | 150.00 | 104.17 | 534.48 | 0.00 | 895.89 | 738.02 | 1022.12 | 848.15 | 1103.73 | 890.43 | 1358.91 | 479.17 | 701.90 | 653.54 | 5 |
| 28 | TJM-VKO | 5.17 | 4.05 | 3.38 | 3.91 | 2.23 | 3.17 | 5.15 | 2.65 | 3.63 | 2.76 | 130.88 | 104.59 | 84.28 | 108.64 | 54.00 | 82.17 | 135.09 | 65.48 | 100.59 | 71.26 | 332.55 | 436.51 | 472.82 | 474.24 | 462.83 | 508.42 | 399.13 | 435.37 | 550.23 | 510.21 | 6 |
| 32 | HMA-VKO | 4.93 | 6.28 | 3.33 | 4.44 | 3.23 | 4.64 | 6.00 | 6.25 | 10.17 | 1.79 | 130.99 | 173.82 | 80.00 | 120.00 | 80.65 | 132.45 | 159.00 | 160.00 | 254.24 | 62.50 | 899.08 | 1050.16 | 1074.53 | 906.72 | 879.30 | 829.14 | 1380.40 | 887.07 | 1129.41 | 989.82 | 7 |
| 42 | SGC-VKO | 4.34 | 4.63 | 6.02 | 4.56 | 4.44 | 3.85 | 3.15 | 4.09 | 4.50 | 5.54 | 124.17 | 114.09 | 166.84 | 122.20 | 113.73 | 100.47 | 77.46 | 97.70 | 111.71 | 148.43 | 612.36 | 755.80 | 805.85 | 847.16 | 811.58 | 678.53 | 703.81 | 706.48 | 772.33 | 863.21 | 8 |
| 56 | SCW-VKO | 3.01 | 3.73 | 3.93 | 3.76 | 4.18 | 2.39 | 3.32 | 1.27 | 5.17 | 4.62 | 83.13 | 95.47 | 98.75 | 98.61 | 108.18 | 65.26 | 81.25 | 35.79 | 139.51 | 123.60 | 384.41 | 574.00 | 452.14 | 429.97 | 574.85 | 463.73 | 409.71 | 624.76 | 569.15 | 599.55 | 9 |
| 60 | KJA-VKO | 2.26 | 4.37 | 7.00 | 4.04 | 4.90 | 4.97 | 7.21 | 7.66 | 6.29 | 3.59 | 56.03 | 111.33 | 186.50 | 110.24 | 130.77 | 125.67 | 193.26 | 204.05 | 158.27 | 103.19 | 769.01 | 690.80 | 660.14 | 681.11 | 727.91 | 567.38 | 661.05 | 664.05 | 918.49 | 861.77 | 10 |
| 66 | NOJ-VKO | 1.28 | 9.65 | 8.13 | 6.74 | 0.00 | 4.44 | 6.90 | 5.04 | 6.58 | 3.51 | 29.49 | 241.23 | 214.63 | 186.52 | 0.00 | 116.30 | 193.10 | 132.77 | 188.16 | 87.72 | 1355.77 | 1117.24 | 1574.88 | 1628.09 | 1434.63 | 1289.44 | 1565.30 | 1205.63 | 1490.86 | 1450.00 | 11 |
| 72 | OVS-TJM | 0.00 | 10.00 | 10.00 | 17.65 | 14.29 | 33.33 | 50.00 | NaN | 0.00 | 0.00 | 0.00 | 300.00 | 300.00 | 558.82 | 328.57 | 858.33 | 1750.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 12 |
| 92 | DXB-GRV | 0.00 | 3.33 | 0.00 | 0.00 | 7.41 | 0.00 | 3.70 | 0.00 | 0.00 | 0.00 | 0.00 | 150.83 | 0.00 | 0.00 | 299.44 | 0.00 | 97.22 | 0.00 | 0.00 | 0.00 | 576.92 | 456.67 | 1018.52 | 666.67 | 1100.00 | 1315.15 | 1011.11 | 2400.00 | 1300.00 | 571.43 | 13 |
| 145 | IKT-VKO | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 3.87 | 3.82 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 85.16 | 116.79 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 875.48 | 1036.07 | 14 |
count_weeks = 5 # зацепить
exemple = income_dolya_bag_nac.iloc[:,[0,1,2,3,4,5,6,7,8,9,10,11,12,18,19,20,21,22,28,29,30,31,32]]
exemple[:3]
exemple = exemple[(exemple['онлайн_оффлайн'] == 'онлайн')].groupby(['Маршрут','Московский_Региональный']).sum()
exemple.shape
for i in range(count_weeks):
exemple['{}_dolya_bag'.format(i)] = 0
exemple.iloc[:, len(exemple.columns)-1] = exemple.iloc[:,i]/exemple.iloc[:,i+count_weeks]
for i in range(count_weeks):
exemple['{}_mean_bag'.format(i)] = 0
exemple.iloc[:, len(exemple.columns)-1] = exemple.iloc[:,i+count_weeks*2]/exemple.iloc[:,i]
for i in range(count_weeks):
exemple['{}_mean_nac'.format(i)] = 0
exemple.iloc[:, len(exemple.columns)-1] = exemple.iloc[:,i+count_weeks*3]/exemple.iloc[:,i+count_weeks]
# exemple.iloc[:,i+len(count_weeks)*3]/exemple.iloc[:,i+count_weeks]
exemple.iloc[:,count_weeks*4:count_weeks*5] = exemple.iloc[:,count_weeks*4:count_weeks*5].round(4)*100
exemple.iloc[:,0:count_weeks*4] = exemple.iloc[:,0:count_weeks*4].round(1)
exemple.iloc[:,count_weeks*5:count_weeks*7] = exemple.iloc[:,count_weeks*5:count_weeks*7].round(2)
exemple.iloc[:,count_weeks*5:count_weeks*7] = exemple.iloc[:,count_weeks*5:count_weeks*7].fillna(0)
#exemple.iloc[:,count_weeks*5:count_weeks*7] = exemple.iloc[:,count_weeks*5:count_weeks*7].astype('int64')
exemple
| Неделя эксперимента | 21_x | 22_x | 23_x | 24_x | 25_x | 21_y | 22_y | 23_y | 24_y | 25_y | 21_x | 22_x | 23_x | 24_x | 25_x | 21_y | 22_y | 23_y | 24_y | 25_y | 0_dolya_bag | 1_dolya_bag | 2_dolya_bag | 3_dolya_bag | 4_dolya_bag | 0_mean_bag | 1_mean_bag | 2_mean_bag | 3_mean_bag | 4_mean_bag | 0_mean_nac | 1_mean_nac | 2_mean_nac | 3_mean_nac | 4_mean_nac | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | Московский_Региональный | |||||||||||||||||||||||||||||||||||
| AAQ-AER | региональный | 54.0 | 31.0 | 58.0 | 42.0 | 11.0 | 568.0 | 619.0 | 729.0 | 581.0 | 563.0 | 115467.5 | 69681.0 | 123860.0 | 90278.5 | 22792.5 | 192000.0 | 254375.0 | 256500.0 | 241125.0 | 234750.0 | 9.51 | 5.01 | 7.96 | 7.23 | 1.95 | 2138.29 | 2247.77 | 2135.52 | 2149.49 | 2072.05 | 338.03 | 410.95 | 351.85 | 415.02 | 416.96 |
| AAQ-HMA | региональный | 6.0 | 11.0 | 6.0 | 7.0 | 4.0 | 120.0 | 258.0 | 164.0 | 82.0 | 64.0 | 16496.5 | 27490.0 | 13994.8 | 13493.0 | 8996.3 | 194325.0 | 489150.0 | 285675.0 | 126800.0 | 136325.0 | 5.00 | 4.26 | 3.66 | 8.54 | 6.25 | 2749.42 | 2499.09 | 2332.47 | 1927.57 | 2249.08 | 1619.38 | 1895.93 | 1741.92 | 1546.34 | 2130.08 |
| AAQ-NJC | региональный | 18.0 | 19.0 | 20.0 | 15.0 | 6.0 | 210.0 | 170.0 | 245.0 | 200.0 | 191.0 | 37983.0 | 35783.0 | 44980.0 | 33286.0 | 11994.0 | 357550.0 | 299450.0 | 409350.0 | 326925.0 | 224650.0 | 8.57 | 11.18 | 8.16 | 7.50 | 3.14 | 2110.17 | 1883.32 | 2249.00 | 2219.07 | 1999.00 | 1702.62 | 1761.47 | 1670.82 | 1634.62 | 1176.18 |
| AAQ-SCW | региональный | 9.0 | 5.0 | 9.0 | 4.0 | 3.0 | 288.0 | 233.0 | 191.0 | 202.0 | 105.0 | 20993.0 | 11495.0 | 19491.0 | 9797.0 | 7497.0 | 404700.0 | 372150.0 | 203750.0 | 214075.0 | 111825.0 | 3.12 | 2.15 | 4.71 | 1.98 | 2.86 | 2332.56 | 2299.00 | 2165.67 | 2449.25 | 2499.00 | 1405.21 | 1597.21 | 1066.75 | 1059.78 | 1065.00 |
| AAQ-SGC | региональный | 39.0 | 55.0 | 44.0 | 30.0 | 19.0 | 762.0 | 741.0 | 768.0 | 561.0 | 484.0 | 81064.5 | 128553.0 | 98760.0 | 64471.3 | 45982.3 | 1423000.0 | 1374700.0 | 1713200.0 | 1048475.0 | 1005350.0 | 5.12 | 7.42 | 5.73 | 5.35 | 3.93 | 2078.58 | 2337.33 | 2244.55 | 2149.04 | 2420.12 | 1867.45 | 1855.20 | 2230.73 | 1868.94 | 2077.17 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| UFA-VOG | региональный | 15.0 | 11.0 | 24.0 | 7.0 | 4.0 | 544.0 | 411.0 | 449.0 | 364.0 | 232.0 | 23990.0 | 23493.5 | 50082.0 | 13494.0 | 6996.5 | 128750.0 | 114000.0 | 137875.0 | 148000.0 | 99625.0 | 2.76 | 2.68 | 5.35 | 1.92 | 1.72 | 1599.33 | 2135.77 | 2086.75 | 1927.71 | 1749.12 | 236.67 | 277.37 | 307.07 | 406.59 | 429.42 |
| ULV-VKO | московский | 21.0 | 21.0 | 17.0 | 24.0 | 16.0 | 801.0 | 606.0 | 766.0 | 613.0 | 635.0 | 44190.0 | 45584.5 | 37091.0 | 52487.5 | 30287.5 | 152500.0 | 93875.0 | 170750.0 | 164625.0 | 163375.0 | 2.62 | 3.47 | 2.22 | 3.92 | 2.52 | 2104.29 | 2170.69 | 2181.82 | 2186.98 | 1892.97 | 190.39 | 154.91 | 222.91 | 268.56 | 257.28 |
| USK-VKO | московский | 42.0 | 26.0 | 25.0 | 20.0 | 15.0 | 474.0 | 433.0 | 381.0 | 393.0 | 346.0 | 93279.5 | 51484.0 | 51786.5 | 37587.0 | 33993.0 | 819050.0 | 736975.0 | 654175.0 | 757800.0 | 557000.0 | 8.86 | 6.00 | 6.56 | 5.09 | 4.34 | 2220.94 | 1980.15 | 2071.46 | 1879.35 | 2266.20 | 1727.95 | 1702.02 | 1716.99 | 1928.24 | 1609.83 |
| VIE-VKO | московский | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.0 | 4.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4500.0 | 4500.0 | 0.0 | 0.0 | NaN | 0.00 | 0.00 | NaN | NaN | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 900.00 | 1125.00 | 0.00 | 0.00 |
| VKO-ZNZ | московский | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5670.0 | 0.0 | 0.0 | NaN | NaN | 0.00 | NaN | NaN | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1890.00 | 0.00 | 0.00 |
168 rows × 35 columns
ids_cols(exemple)
0 21_x 1 22_x 2 23_x 3 24_x 4 25_x 5 21_y 6 22_y 7 23_y 8 24_y 9 25_y 10 21_x 11 22_x 12 23_x 13 24_x 14 25_x 15 21_y 16 22_y 17 23_y 18 24_y 19 25_y 20 0_dolya_bag 21 1_dolya_bag 22 2_dolya_bag 23 3_dolya_bag 24 4_dolya_bag 25 0_mean_bag 26 1_mean_bag 27 2_mean_bag 28 3_mean_bag 29 4_mean_bag 30 0_mean_nac 31 1_mean_nac 32 2_mean_nac 33 3_mean_nac 34 4_mean_nac
exemple.shape
(168, 20)
len(exemple.columns)
20
exemple.iloc[:,0]
Маршрут Московский_Региональный
AAQ-AER региональный 54.0
AAQ-HMA региональный 6.0
AAQ-NJC региональный 18.0
AAQ-SCW региональный 9.0
AAQ-SGC региональный 39.0
...
UFA-VOG региональный 15.0
ULV-VKO московский 21.0
USK-VKO московский 42.0
VIE-VKO московский 0.0
VKO-ZNZ московский 0.0
Name: 21_x, Length: 168, dtype: float64
df_TD_good_for_nac_svod_segmts = df_TD_with_filtrs_tickets_only.pivot_table(
values = 'Количество проданных сегментов', index = ['Маршрут'], columns = 'Неделя эксперимента', aggfunc = 'sum')
bag_kolvo = df_TD_with_filtrs_tickets[(df_TD_with_filtrs_tickets['онлайн_оффлайн'] == 'онлайн')].pivot_table(
values = 'Услуга_Багаж', index = ['Маршрут', 'Тип_багажа'], columns = 'Неделя эксперимента', aggfunc = 'sum')
bag_kolvo = bag_kolvo.reset_index()
df_TD_good_for_nac_svod_segmts = df_TD_good_for_nac_svod_segmts.reset_index()
dolya_bag = bag_kolvo.merge(df_TD_good_for_nac_svod_segmts, how = 'left', on = 'Маршрут').set_index(['Маршрут','Тип_багажа'])
for i in df_TD_good_for_nac_svod_segmts.columns[1:]:
dolya_bag[i] = dolya_bag['{}_x'.format(i)]/dolya_bag['{}_y'.format(i)]
dolya_bag = dolya_bag.iloc[:,10:16]
dolya_bag
| Неделя эксперимента | 21 | 22 | 23 | 24 | 25 | |
|---|---|---|---|---|---|---|
| Маршрут | Тип_багажа | |||||
| AAQ-AER | 0 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| БГ10 | 0.023691 | 0.008065 | 0.018367 | 0.018100 | 0.005882 | |
| БГ20 | 0.022444 | 0.014113 | 0.023469 | 0.014706 | 0.004706 | |
| РК10 | 0.021197 | 0.009073 | 0.017347 | 0.014706 | 0.002353 | |
| AAQ-HMA | 0 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| ... | ... | ... | ... | ... | ... | ... |
| USK-VKO | БГ10 | 0.012821 | 0.009122 | 0.010227 | 0.015056 | 0.003205 |
| БГ20 | 0.013889 | 0.006842 | 0.006818 | 0.005019 | 0.008547 | |
| РК10 | 0.018162 | 0.013683 | 0.011364 | 0.005019 | 0.004274 | |
| VIE-VKO | 0 | NaN | 0.000000 | 0.000000 | NaN | NaN |
| VKO-ZNZ | 0 | NaN | NaN | 0.000000 | NaN | NaN |
630 rows × 5 columns
a = dolya_bag.groupby('Маршрут').agg('sum')
a.iloc[1].values
array([0.02985075, 0.02925532, 0.01570681, 0.03553299, 0.032 ])
data = [a.iloc[i].values for i in range(len(a))]
layout = {'title' : 'Доля багажа по неделям',
'autosize' : False,
'width' : 1000,
'height' : 1000
}
# for step in np.arange(0, 5, 0.1):
# fig.add_trace(
# go.Scatter(y=a.iloc[i].values,
# x=a.columns,
# name=a.iloc[i].name) for i in range(len(a)))
# sliders = [dict(
# active=10,
# currentvalue={"prefix": "Frequency: "},
# pad={"t": 50},
# steps=steps
# )]
# steps = []
# for i in range(len(fig.data)):
# step = dict(
# method="update",
# args=[{"visible": [False] * len(fig.data)},
# {"title": "Slider switched to step: " + str(i)}], # layout attribute
# )
# step["args"][0]["visible"][i] = True # Toggle i'th trace to "visible"
# steps.append(step)
# sliders = [dict(
# active=5,
# currentvalue={"prefix": "Frequency: "},
# pad={"t": 50},
# steps=steps
# )]
traces = [go.Scatter(y=a.iloc[i].values,
x=a.columns,
name=a.iloc[i].name) for i in range(len(a))]
a.columns
Index([21, 22, 23, 24, 25], dtype='object', name='Неделя эксперимента')
a.index[0]
'AAQ-AER'
data = traces
fig = go.Figure(data=data, layout=layout)#, sliders=sliders)
iplot(fig, show_link=False)
fig = go.Figure()
# Add traces, one for each slider step
for step in np.arange(len(a)):
fig.add_trace(
go.Scatter(y=a.iloc[step].values,
x=a.columns,
name=a.iloc[i].name))
# Make 10th trace visible
fig.data[10].visible = True
# Create and add slider
steps = []
for i in range(len(fig.data)):
step = dict(
method="update",
args=[{"visible": [False] * len(fig.data)},
{"title": "Slider switched to step: " + a.index[i]}], # layout attribute
)
step["args"][0]["visible"][i] = True # Toggle i'th trace to "visible"
steps.append(step)
sliders = [dict(
active=10,
currentvalue={"prefix": "Frequency: "},
pad={"t": 50},
steps=steps
)]
fig.update_layout(
sliders=sliders
)
fig.show()
layout = {'title' : 'Доля багажа по неделям',
'autosize' : False,
'width' : 1000,
'height' : 800
}
traces = [go.Scatter(y=a.iloc[i].values,
x=a.columns,
name=a.iloc[i].name) for i in range(len(a))]
data = traces
fig = go.Figure(data=data, layout=layout)#, sliders=sliders)
iplot(fig, show_link=False)
import plotly.express as px
df = px.data.gapminder()
fig = px.scatter(df, x="gdpPercap", y="lifeExp", animation_frame="year", animation_group="country",
size="pop", color="continent", hover_name="country",
log_x=True, size_max=55, range_x=[100,100000], range_y=[25,90])
fig["layout"].pop("updatemenus") # optional, drop animation buttons
fig.show()
2+2
df_month[df_month['Мос/Рег'] == 'Рег'][['%Вид услуги_Выбор места + рег','%Вид услуги_Выбор места + бук']].loc[order]\
.plot( kind='bar', figsize=[16,6], stacked=True,colormap='Wistia',title ='Процент выбора услуги в зависимости от месяца',)
graph.legend(['Регестрация',"Букинг"])
pip install plotly
# Стандартное импортирование plotly
#import plotly.plotly as py
import plotly
import plotly.graph_objs as go
from plotly.offline import iplot
# Использование cufflinks в офлайн-режиме
import cufflinks
cufflinks.go_offline()
# Настройка глобальной темы cufflinks
cufflinks.set_config_file(world_readable=True, theme='pearl', offline=True)
tds
# tds = df_TD_with_filtrs_tickets[df_TD_with_filtrs_tickets['онлайн_оффлайн'] == 'онлайн']#.set_index('Неделя эксперимента')
# tds[['Неделя эксперимента', 'Услуга_Багаж',]].iplot( x = 'Неделя эксперимента',
# y='Услуга_Багаж', mode='lines+markers',
# xTitle='Неделя', yTitle='Количество багажа',
# #text='Вид операции (бланка)', title='Количество багажа по неделям и маршрутам'
# )
df_TD_good.loc[df_TD_good['Тип_багажа']==0, 'Тип_багажа'] = np.nan
#df_TD_good['Услуга_Багаж'] = df_TD_good['Услуга_Багаж'].fillna(0)
df_TD_with_filtrs_tickets.pivot_table(values='Услуга_Багаж',
columns = ['Неделя эксперимента'],
index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
aggfunc='sum')[0:40]
| Неделя эксперимента | 21 | 22 | 23 | 24 | 25 | |||
|---|---|---|---|---|---|---|---|---|
| Маршрут | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | |||||
| AAQ-AER | онлайн | букинг | региональный | 51.0 | 29.0 | 54.0 | 40.0 | 11.0 |
| регистрация | региональный | 3.0 | 2.0 | 4.0 | 2.0 | 0.0 | ||
| оффлайн | букинг | региональный | 10.0 | 10.0 | 14.0 | 12.0 | 6.0 | |
| регистрация | региональный | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | ||
| AAQ-HMA | онлайн | букинг | региональный | 6.0 | 11.0 | 6.0 | 7.0 | 4.0 |
| регистрация | региональный | NaN | 0.0 | NaN | 0.0 | 0.0 | ||
| оффлайн | букинг | региональный | 0.0 | 3.0 | 0.0 | 1.0 | 1.0 | |
| регистрация | региональный | NaN | NaN | 0.0 | 0.0 | NaN | ||
| AAQ-NJC | онлайн | букинг | региональный | 18.0 | 19.0 | 20.0 | 15.0 | 6.0 |
| регистрация | региональный | NaN | 0.0 | 0.0 | NaN | NaN | ||
| оффлайн | букинг | региональный | 3.0 | 3.0 | 4.0 | 5.0 | 0.0 | |
| регистрация | региональный | NaN | 0.0 | NaN | 0.0 | 1.0 | ||
| AAQ-SCW | онлайн | букинг | региональный | 9.0 | 5.0 | 9.0 | 4.0 | 3.0 |
| регистрация | региональный | NaN | 0.0 | 0.0 | 0.0 | 0.0 | ||
| оффлайн | букинг | региональный | 1.0 | 2.0 | 2.0 | 0.0 | 0.0 | |
| регистрация | региональный | NaN | 0.0 | 0.0 | 0.0 | 0.0 | ||
| AAQ-SGC | онлайн | букинг | региональный | 39.0 | 54.0 | 41.0 | 30.0 | 19.0 |
| регистрация | региональный | 0.0 | 1.0 | 3.0 | 0.0 | 0.0 | ||
| оффлайн | букинг | региональный | 3.0 | 4.0 | 16.0 | 14.0 | 11.0 | |
| регистрация | региональный | 0.0 | 0.0 | 2.0 | 0.0 | 0.0 | ||
| AAQ-SVX | онлайн | букинг | региональный | 17.0 | 17.0 | 6.0 | 11.0 | 8.0 |
| регистрация | региональный | NaN | 0.0 | 1.0 | 0.0 | 0.0 | ||
| оффлайн | букинг | региональный | 12.0 | 10.0 | 3.0 | 4.0 | 1.0 | |
| регистрация | региональный | NaN | 1.0 | 0.0 | 0.0 | 0.0 | ||
| AAQ-TJM | онлайн | букинг | региональный | 36.0 | 26.0 | 38.0 | 27.0 | 15.0 |
| регистрация | региональный | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | ||
| оффлайн | букинг | региональный | 7.0 | 15.0 | 8.0 | 4.0 | 2.0 | |
| регистрация | региональный | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | ||
| AAQ-UFA | онлайн | букинг | региональный | 17.0 | 12.0 | 13.0 | 15.0 | 4.0 |
| регистрация | региональный | NaN | 1.0 | 2.0 | 2.0 | 0.0 | ||
| оффлайн | букинг | региональный | 3.0 | 7.0 | 14.0 | 5.0 | 2.0 | |
| регистрация | региональный | NaN | 0.0 | 5.0 | 1.0 | 0.0 | ||
| AAQ-VKO | онлайн | букинг | московский | 504.0 | 843.0 | 419.0 | 200.0 | 122.0 |
| регистрация | московский | 9.0 | 9.0 | 9.0 | 10.0 | 17.0 | ||
| оффлайн | букинг | московский | 134.0 | 226.0 | 113.0 | 47.0 | 26.0 | |
| регистрация | московский | 7.0 | 8.0 | 7.0 | 5.0 | 9.0 | ||
| AER-ASF | онлайн | букинг | региональный | 59.0 | 47.0 | 42.0 | 22.0 | 22.0 |
| регистрация | региональный | 1.0 | 1.0 | 0.0 | 0.0 | 0.0 | ||
| оффлайн | букинг | региональный | 13.0 | 3.0 | 5.0 | 11.0 | 0.0 | |
| регистрация | региональный | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
df_TD_good_for_nac_svod_segmts.columns[4:]
Index([21, 22, 23, 24, 25], dtype='object', name='Неделя эксперимента')
df_TD_good_for_nac_svod_segmts = df_TD_with_filtrs_tickets_only.pivot_table(
values = 'Количество проданных сегментов',
index = ['Маршрут'],
columns = 'Неделя эксперимента', aggfunc = 'sum')
bag_kolvo = df_TD_with_filtrs_tickets.pivot_table(
values = 'Услуга_Багаж', index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента', aggfunc = 'sum')
bag_kolvo = bag_kolvo.reset_index()
df_TD_good_for_nac_svod_segmts = df_TD_good_for_nac_svod_segmts.reset_index()
dolya_bag = bag_kolvo.merge(df_TD_good_for_nac_svod_segmts, how = 'left', on = 'Маршрут').set_index(['Маршрут'])
dolya_bag
for i in df_TD_good_for_nac_svod_segmts.columns[1:]:
dolya_bag[i] = dolya_bag['{}_x'.format(i)]/dolya_bag['{}_y'.format(i)]
dolya_bag = dolya_bag.iloc[:,[0,1,2,13,14,15,16,17]]
dolya_bag
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 21 | 22 | 23 | 24 | 25 |
|---|---|---|---|---|---|---|---|---|
| Маршрут | ||||||||
| AAQ-AER | онлайн | букинг | региональный | 0.063591 | 0.029234 | 0.055102 | 0.045249 | 0.012941 |
| AAQ-AER | онлайн | регистрация | региональный | 0.003741 | 0.002016 | 0.004082 | 0.002262 | 0.000000 |
| AAQ-AER | оффлайн | букинг | региональный | 0.012469 | 0.010081 | 0.014286 | 0.013575 | 0.007059 |
| AAQ-AER | оффлайн | регистрация | региональный | 0.000000 | 0.000000 | 0.001020 | 0.000000 | 0.000000 |
| AAQ-HMA | онлайн | букинг | региональный | 0.029851 | 0.029255 | 0.015707 | 0.035533 | 0.032000 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| USK-VKO | оффлайн | регистрация | московский | 0.001068 | 0.000000 | 0.003409 | 0.001255 | 0.002137 |
| VIE-VKO | онлайн | букинг | московский | NaN | 0.000000 | 0.000000 | NaN | NaN |
| VIE-VKO | оффлайн | букинг | московский | NaN | NaN | 0.000000 | NaN | NaN |
| VKO-ZNZ | онлайн | букинг | московский | NaN | NaN | 0.000000 | NaN | NaN |
| VKO-ZNZ | оффлайн | букинг | московский | NaN | NaN | NaN | NaN | 0.000000 |
645 rows × 8 columns
a = dolya_bag.reset_index()
a.iloc[0,:].values[:5]
array(['AAQ-AER', 0, 'онлайн', 'букинг', 'региональный'], dtype=object)
[str(a.iloc[i,:].values[:5]) for i in range(len(a))]
["['AAQ-AER' 0 'онлайн' 'букинг' 'региональный']", "['AAQ-AER' 0 'онлайн' 'регистрация' 'региональный']", "['AAQ-AER' 0 'оффлайн' 'букинг' 'региональный']", "['AAQ-AER' 0 'оффлайн' 'регистрация' 'региональный']", "['AAQ-AER' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AAQ-AER' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-AER' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-AER' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-AER' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AAQ-AER' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AAQ-AER' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AAQ-AER' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-AER' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AAQ-AER' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-AER' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-AER' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-HMA' 0 'онлайн' 'букинг' 'региональный']", "['AAQ-HMA' 0 'онлайн' 'регистрация' 'региональный']", "['AAQ-HMA' 0 'оффлайн' 'букинг' 'региональный']", "['AAQ-HMA' 0 'оффлайн' 'регистрация' 'региональный']", "['AAQ-HMA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AAQ-HMA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-HMA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-HMA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-HMA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AAQ-HMA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AAQ-HMA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AAQ-HMA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-HMA' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AAQ-HMA' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-HMA' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-HMA' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-NJC' 0 'онлайн' 'букинг' 'региональный']", "['AAQ-NJC' 0 'онлайн' 'регистрация' 'региональный']", "['AAQ-NJC' 0 'оффлайн' 'букинг' 'региональный']", "['AAQ-NJC' 0 'оффлайн' 'регистрация' 'региональный']", "['AAQ-NJC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AAQ-NJC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-NJC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-NJC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-NJC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AAQ-NJC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AAQ-NJC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AAQ-NJC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-NJC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AAQ-NJC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-NJC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-NJC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SCW' 0 'онлайн' 'букинг' 'региональный']", "['AAQ-SCW' 0 'онлайн' 'регистрация' 'региональный']", "['AAQ-SCW' 0 'оффлайн' 'букинг' 'региональный']", "['AAQ-SCW' 0 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SCW' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AAQ-SCW' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-SCW' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-SCW' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SCW' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AAQ-SCW' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AAQ-SCW' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AAQ-SCW' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SCW' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AAQ-SCW' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-SCW' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-SCW' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SGC' 0 'онлайн' 'букинг' 'региональный']", "['AAQ-SGC' 0 'онлайн' 'регистрация' 'региональный']", "['AAQ-SGC' 0 'оффлайн' 'букинг' 'региональный']", "['AAQ-SGC' 0 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SGC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AAQ-SGC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-SGC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-SGC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SGC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AAQ-SGC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AAQ-SGC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AAQ-SGC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SGC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AAQ-SGC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-SGC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-SGC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SVX' 0 'онлайн' 'букинг' 'региональный']", "['AAQ-SVX' 0 'онлайн' 'регистрация' 'региональный']", "['AAQ-SVX' 0 'оффлайн' 'букинг' 'региональный']", "['AAQ-SVX' 0 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SVX' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AAQ-SVX' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-SVX' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-SVX' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SVX' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AAQ-SVX' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AAQ-SVX' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AAQ-SVX' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-SVX' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AAQ-SVX' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-SVX' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-SVX' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-TJM' 0 'онлайн' 'букинг' 'региональный']", "['AAQ-TJM' 0 'онлайн' 'регистрация' 'региональный']", "['AAQ-TJM' 0 'оффлайн' 'букинг' 'региональный']", "['AAQ-TJM' 0 'оффлайн' 'регистрация' 'региональный']", "['AAQ-TJM' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AAQ-TJM' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-TJM' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-TJM' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-TJM' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AAQ-TJM' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AAQ-TJM' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AAQ-TJM' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-TJM' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AAQ-TJM' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-TJM' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-TJM' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-UFA' 0 'онлайн' 'букинг' 'региональный']", "['AAQ-UFA' 0 'онлайн' 'регистрация' 'региональный']", "['AAQ-UFA' 0 'оффлайн' 'букинг' 'региональный']", "['AAQ-UFA' 0 'оффлайн' 'регистрация' 'региональный']", "['AAQ-UFA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AAQ-UFA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-UFA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-UFA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-UFA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AAQ-UFA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AAQ-UFA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AAQ-UFA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-UFA' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AAQ-UFA' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AAQ-UFA' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AAQ-UFA' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AAQ-VKO' 0 'онлайн' 'букинг' 'московский']", "['AAQ-VKO' 0 'онлайн' 'регистрация' 'московский']", "['AAQ-VKO' 0 'оффлайн' 'букинг' 'московский']", "['AAQ-VKO' 0 'оффлайн' 'регистрация' 'московский']", "['AAQ-VKO' 'БГ10' 'онлайн' 'букинг' 'московский']", "['AAQ-VKO' 'БГ10' 'онлайн' 'регистрация' 'московский']", "['AAQ-VKO' 'БГ10' 'оффлайн' 'букинг' 'московский']", "['AAQ-VKO' 'БГ10' 'оффлайн' 'регистрация' 'московский']", "['AAQ-VKO' 'БГ20' 'онлайн' 'букинг' 'московский']", "['AAQ-VKO' 'БГ20' 'онлайн' 'регистрация' 'московский']", "['AAQ-VKO' 'БГ20' 'оффлайн' 'букинг' 'московский']", "['AAQ-VKO' 'БГ20' 'оффлайн' 'регистрация' 'московский']", "['AAQ-VKO' 'РК10' 'онлайн' 'букинг' 'московский']", "['AAQ-VKO' 'РК10' 'онлайн' 'регистрация' 'московский']", "['AAQ-VKO' 'РК10' 'оффлайн' 'букинг' 'московский']", "['AAQ-VKO' 'РК10' 'оффлайн' 'регистрация' 'московский']", "['AER-ASF' 0 'онлайн' 'букинг' 'региональный']", "['AER-ASF' 0 'онлайн' 'регистрация' 'региональный']", "['AER-ASF' 0 'оффлайн' 'букинг' 'региональный']", "['AER-ASF' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-ASF' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-ASF' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-ASF' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-ASF' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-ASF' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-ASF' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-ASF' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-ASF' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-ASF' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-ASF' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-ASF' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-ASF' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-ESL' 0 'онлайн' 'букинг' 'региональный']", "['AER-ESL' 0 'онлайн' 'регистрация' 'региональный']", "['AER-ESL' 0 'оффлайн' 'букинг' 'региональный']", "['AER-ESL' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-ESL' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-ESL' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-ESL' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-ESL' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-ESL' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-ESL' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-ESL' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-ESL' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-ESL' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-ESL' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-ESL' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-ESL' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-GRV' 0 'онлайн' 'букинг' 'региональный']", "['AER-GRV' 0 'онлайн' 'регистрация' 'региональный']", "['AER-GRV' 0 'оффлайн' 'букинг' 'региональный']", "['AER-GRV' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-GRV' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-GRV' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-GRV' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-GRV' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-GRV' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-GRV' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-GRV' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-GRV' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-GRV' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-GRV' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-GRV' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-GRV' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-HMA' 0 'онлайн' 'букинг' 'региональный']", "['AER-HMA' 0 'онлайн' 'регистрация' 'региональный']", "['AER-HMA' 0 'оффлайн' 'букинг' 'региональный']", "['AER-HMA' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-HMA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-HMA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-HMA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-HMA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-HMA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-HMA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-HMA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-HMA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-HMA' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-HMA' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-HMA' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-HMA' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-KRR' 0 'онлайн' 'букинг' 'региональный']", "['AER-KRR' 0 'онлайн' 'регистрация' 'региональный']", "['AER-KRR' 0 'оффлайн' 'букинг' 'региональный']", "['AER-KRR' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-KRR' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-KRR' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-KRR' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-KRR' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-KRR' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-KRR' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-KRR' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-KRR' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-KRR' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-KRR' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-KRR' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-KRR' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-MCX' 0 'онлайн' 'букинг' 'региональный']", "['AER-MCX' 0 'онлайн' 'регистрация' 'региональный']", "['AER-MCX' 0 'оффлайн' 'букинг' 'региональный']", "['AER-MCX' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-MCX' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-MCX' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-MCX' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-MCX' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-MCX' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-MCX' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-MCX' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-MCX' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-MCX' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-MCX' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-MCX' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-MCX' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-MRV' 0 'онлайн' 'букинг' 'региональный']", "['AER-MRV' 0 'онлайн' 'регистрация' 'региональный']", "['AER-MRV' 0 'оффлайн' 'букинг' 'региональный']", "['AER-MRV' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-MRV' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-MRV' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-MRV' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-MRV' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-MRV' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-MRV' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-MRV' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-MRV' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-MRV' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-MRV' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-MRV' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-MRV' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-NJC' 0 'онлайн' 'букинг' 'региональный']", "['AER-NJC' 0 'онлайн' 'регистрация' 'региональный']", "['AER-NJC' 0 'оффлайн' 'букинг' 'региональный']", "['AER-NJC' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-NJC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-NJC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-NJC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-NJC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-NJC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-NJC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-NJC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-NJC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-NJC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-NJC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-NJC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-NJC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-OGZ' 0 'онлайн' 'букинг' 'региональный']", "['AER-OGZ' 0 'онлайн' 'регистрация' 'региональный']", "['AER-OGZ' 0 'оффлайн' 'букинг' 'региональный']", "['AER-OGZ' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-OGZ' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-OGZ' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-OGZ' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-OGZ' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-OGZ' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-OGZ' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-OGZ' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-OGZ' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-OGZ' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-OGZ' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-OGZ' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-OGZ' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-ROV' 0 'онлайн' 'букинг' 'региональный']", "['AER-ROV' 0 'онлайн' 'регистрация' 'региональный']", "['AER-ROV' 0 'оффлайн' 'букинг' 'региональный']", "['AER-ROV' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-ROV' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-ROV' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-ROV' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-ROV' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-SCW' 0 'онлайн' 'букинг' 'региональный']", "['AER-SCW' 0 'онлайн' 'регистрация' 'региональный']", "['AER-SCW' 0 'оффлайн' 'букинг' 'региональный']", "['AER-SCW' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-SCW' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-SCW' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-SCW' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-SCW' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-SCW' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-SCW' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-SCW' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-SCW' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-SCW' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-SCW' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-SCW' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-SCW' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-SGC' 0 'онлайн' 'букинг' 'региональный']", "['AER-SGC' 0 'онлайн' 'регистрация' 'региональный']", "['AER-SGC' 0 'оффлайн' 'букинг' 'региональный']", "['AER-SGC' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-SGC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-SGC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-SGC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-SGC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-SGC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-SGC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-SGC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-SGC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-SGC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-SGC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-SGC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-SGC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-STW' 0 'онлайн' 'букинг' 'региональный']", "['AER-STW' 0 'онлайн' 'регистрация' 'региональный']", "['AER-STW' 0 'оффлайн' 'букинг' 'региональный']", "['AER-STW' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-STW' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-STW' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-STW' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-STW' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-STW' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-STW' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-STW' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-STW' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-STW' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-STW' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-STW' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-STW' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-TJM' 0 'онлайн' 'букинг' 'региональный']", "['AER-TJM' 0 'онлайн' 'регистрация' 'региональный']", "['AER-TJM' 0 'оффлайн' 'букинг' 'региональный']", "['AER-TJM' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-TJM' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-TJM' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-TJM' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-TJM' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-TJM' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-TJM' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-TJM' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-TJM' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-TJM' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-TJM' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-TJM' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-TJM' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-UFA' 0 'онлайн' 'букинг' 'региональный']", "['AER-UFA' 0 'онлайн' 'регистрация' 'региональный']", "['AER-UFA' 0 'оффлайн' 'букинг' 'региональный']", "['AER-UFA' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-UFA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-UFA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-UFA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-UFA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-UFA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-UFA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-UFA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-UFA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-UFA' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-UFA' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-UFA' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-UFA' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-VKO' 0 'онлайн' 'букинг' 'московский']", "['AER-VKO' 0 'онлайн' 'регистрация' 'московский']", "['AER-VKO' 0 'оффлайн' 'букинг' 'московский']", "['AER-VKO' 0 'оффлайн' 'регистрация' 'московский']", "['AER-VKO' 'БГ10' 'онлайн' 'букинг' 'московский']", "['AER-VKO' 'БГ10' 'онлайн' 'регистрация' 'московский']", "['AER-VKO' 'БГ10' 'оффлайн' 'букинг' 'московский']", "['AER-VKO' 'БГ10' 'оффлайн' 'регистрация' 'московский']", "['AER-VKO' 'БГ20' 'онлайн' 'букинг' 'московский']", "['AER-VKO' 'БГ20' 'онлайн' 'регистрация' 'московский']", "['AER-VKO' 'БГ20' 'оффлайн' 'букинг' 'московский']", "['AER-VKO' 'БГ20' 'оффлайн' 'регистрация' 'московский']", "['AER-VKO' 'РК10' 'онлайн' 'букинг' 'московский']", "['AER-VKO' 'РК10' 'онлайн' 'регистрация' 'московский']", "['AER-VKO' 'РК10' 'оффлайн' 'букинг' 'московский']", "['AER-VKO' 'РК10' 'оффлайн' 'регистрация' 'московский']", "['AER-VOG' 0 'онлайн' 'букинг' 'региональный']", "['AER-VOG' 0 'онлайн' 'регистрация' 'региональный']", "['AER-VOG' 0 'оффлайн' 'букинг' 'региональный']", "['AER-VOG' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-VOG' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-VOG' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-VOG' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-VOG' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-VOG' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-VOG' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-VOG' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-VOG' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-VOG' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-VOG' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-VOG' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-VOG' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AER-VOZ' 0 'онлайн' 'букинг' 'региональный']", "['AER-VOZ' 0 'онлайн' 'регистрация' 'региональный']", "['AER-VOZ' 0 'оффлайн' 'букинг' 'региональный']", "['AER-VOZ' 0 'оффлайн' 'регистрация' 'региональный']", "['AER-VOZ' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AER-VOZ' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['AER-VOZ' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AER-VOZ' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['AER-VOZ' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['AER-VOZ' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['AER-VOZ' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['AER-VOZ' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['AER-VOZ' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AER-VOZ' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['AER-VOZ' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['AER-VOZ' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['ASF-KRR' 0 'онлайн' 'букинг' 'региональный']", "['ASF-KRR' 0 'онлайн' 'регистрация' 'региональный']", "['ASF-KRR' 0 'оффлайн' 'букинг' 'региональный']", "['ASF-KRR' 0 'оффлайн' 'регистрация' 'региональный']", "['ASF-KRR' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['ASF-KRR' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['ASF-KRR' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['ASF-KRR' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['ASF-KRR' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['ASF-KRR' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['ASF-KRR' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['ASF-KRR' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['ASF-KRR' 'РК10' 'онлайн' 'букинг' 'региональный']", "['ASF-KRR' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['ASF-KRR' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['ASF-KRR' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['ASF-MRV' 0 'онлайн' 'букинг' 'региональный']", "['ASF-MRV' 0 'онлайн' 'регистрация' 'региональный']", "['ASF-MRV' 0 'оффлайн' 'букинг' 'региональный']", "['ASF-MRV' 0 'оффлайн' 'регистрация' 'региональный']", "['ASF-MRV' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['ASF-MRV' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['ASF-MRV' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['ASF-MRV' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['ASF-MRV' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['ASF-MRV' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['ASF-MRV' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['ASF-MRV' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['ASF-MRV' 'РК10' 'онлайн' 'букинг' 'региональный']", "['ASF-MRV' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['ASF-MRV' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['ASF-MRV' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['ASF-VOG' 0 'онлайн' 'букинг' 'региональный']", "['ASF-VOG' 0 'онлайн' 'регистрация' 'региональный']", "['ASF-VOG' 0 'оффлайн' 'букинг' 'региональный']", "['ASF-VOG' 0 'оффлайн' 'регистрация' 'региональный']", "['ASF-VOG' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['ASF-VOG' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['ASF-VOG' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['ASF-VOG' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['ASF-VOG' 'РК10' 'онлайн' 'букинг' 'региональный']", "['ASF-VOG' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['ASF-VOG' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['ASF-VOG' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['AYT-GRV' 0 'онлайн' 'букинг' 'региональный']", "['AYT-GRV' 0 'оффлайн' 'букинг' 'региональный']", "['AYT-GRV' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['AYT-GRV' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['AYT-GRV' 'РК10' 'онлайн' 'букинг' 'региональный']", "['AYT-GRV' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['BAX-OMS' 0 'онлайн' 'букинг' 'региональный']", "['BAX-OMS' 0 'онлайн' 'регистрация' 'региональный']", "['BAX-OMS' 0 'оффлайн' 'букинг' 'региональный']", "['BAX-OMS' 0 'оффлайн' 'регистрация' 'региональный']", "['BAX-OMS' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['BAX-OMS' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['BAX-OMS' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['BAX-OMS' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['BAX-OMS' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['BAX-OMS' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['BAX-OMS' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['BAX-OMS' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['BAX-OMS' 'РК10' 'онлайн' 'букинг' 'региональный']", "['BAX-OMS' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['BAX-OMS' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['BAX-OMS' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['BAX-SGC' 0 'онлайн' 'букинг' 'региональный']", "['BAX-SGC' 0 'онлайн' 'регистрация' 'региональный']", "['BAX-SGC' 0 'оффлайн' 'букинг' 'региональный']", "['BAX-SGC' 0 'оффлайн' 'регистрация' 'региональный']", "['BAX-SGC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['BAX-SGC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['BAX-SGC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['BAX-SGC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['BAX-SGC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['BAX-SGC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['BAX-SGC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['BAX-SGC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['BAX-SGC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['BAX-SGC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['BAX-SGC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['BAX-SGC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['BER-VKO' 0 'онлайн' 'букинг' 'московский']", "['BER-VKO' 0 'оффлайн' 'букинг' 'московский']", "['BER-VKO' 'БГ10' 'онлайн' 'букинг' 'московский']", "['BER-VKO' 'БГ10' 'оффлайн' 'букинг' 'московский']", "['BER-VKO' 'БГ20' 'онлайн' 'букинг' 'московский']", "['BER-VKO' 'БГ20' 'оффлайн' 'букинг' 'московский']", "['CEK-HMA' 0 'онлайн' 'букинг' 'региональный']", "['CEK-HMA' 0 'онлайн' 'регистрация' 'региональный']", "['CEK-HMA' 0 'оффлайн' 'букинг' 'региональный']", "['CEK-HMA' 0 'оффлайн' 'регистрация' 'региональный']", "['CEK-HMA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['CEK-HMA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['CEK-HMA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['CEK-HMA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['CEK-HMA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['CEK-HMA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['CEK-HMA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['CEK-HMA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['CEK-HMA' 'РК10' 'онлайн' 'букинг' 'региональный']", "['CEK-HMA' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['CEK-HMA' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['CEK-HMA' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['DXB-GRV' 0 'онлайн' 'букинг' 'региональный']", "['DXB-GRV' 0 'онлайн' 'регистрация' 'региональный']", "['DXB-GRV' 0 'оффлайн' 'букинг' 'региональный']", "['DXB-GRV' 0 'оффлайн' 'регистрация' 'региональный']", "['DXB-GRV' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['DXB-GRV' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['DXB-GRV' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['DXB-GRV' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['DXB-GRV' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['DXB-GRV' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['DXB-GRV' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['DXB-GRV' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['DXB-GRV' 'РК10' 'онлайн' 'букинг' 'региональный']", "['DXB-GRV' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['DXB-GRV' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['DXB-GRV' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['DYR-VKO' 0 'онлайн' 'букинг' 'московский']", "['DYR-VKO' 0 'онлайн' 'регистрация' 'московский']", "['DYR-VKO' 0 'оффлайн' 'букинг' 'московский']", "['DYR-VKO' 0 'оффлайн' 'регистрация' 'московский']", "['DYR-VKO' 'БГ10' 'онлайн' 'букинг' 'московский']", "['DYR-VKO' 'БГ10' 'онлайн' 'регистрация' 'московский']", "['DYR-VKO' 'БГ10' 'оффлайн' 'букинг' 'московский']", "['DYR-VKO' 'БГ10' 'оффлайн' 'регистрация' 'московский']", "['DYR-VKO' 'БГ20' 'онлайн' 'букинг' 'московский']", "['DYR-VKO' 'БГ20' 'онлайн' 'регистрация' 'московский']", "['DYR-VKO' 'БГ20' 'оффлайн' 'букинг' 'московский']", "['DYR-VKO' 'БГ20' 'оффлайн' 'регистрация' 'московский']", "['DYR-VKO' 'РК10' 'онлайн' 'букинг' 'московский']", "['DYR-VKO' 'РК10' 'онлайн' 'регистрация' 'московский']", "['DYR-VKO' 'РК10' 'оффлайн' 'букинг' 'московский']", "['DYR-VKO' 'РК10' 'оффлайн' 'регистрация' 'московский']", "['DYU-VKO' 0 'онлайн' 'букинг' 'московский']", "['DYU-VKO' 0 'онлайн' 'регистрация' 'московский']", "['DYU-VKO' 0 'оффлайн' 'букинг' 'московский']", "['DYU-VKO' 0 'оффлайн' 'регистрация' 'московский']", "['DYU-VKO' 'БГ10' 'онлайн' 'букинг' 'московский']", "['DYU-VKO' 'БГ10' 'онлайн' 'регистрация' 'московский']", "['DYU-VKO' 'БГ10' 'оффлайн' 'букинг' 'московский']", "['DYU-VKO' 'БГ10' 'оффлайн' 'регистрация' 'московский']", "['DYU-VKO' 'БГ20' 'онлайн' 'букинг' 'московский']", "['DYU-VKO' 'БГ20' 'онлайн' 'регистрация' 'московский']", "['DYU-VKO' 'БГ20' 'оффлайн' 'букинг' 'московский']", "['DYU-VKO' 'БГ20' 'оффлайн' 'регистрация' 'московский']", "['DYU-VKO' 'РК10' 'онлайн' 'букинг' 'московский']", "['DYU-VKO' 'РК10' 'онлайн' 'регистрация' 'московский']", "['DYU-VKO' 'РК10' 'оффлайн' 'букинг' 'московский']", "['DYU-VKO' 'РК10' 'оффлайн' 'регистрация' 'московский']", "['EGO-SGC' 0 'онлайн' 'букинг' 'региональный']", "['EGO-SGC' 0 'онлайн' 'регистрация' 'региональный']", "['EGO-SGC' 0 'оффлайн' 'букинг' 'региональный']", "['EGO-SGC' 0 'оффлайн' 'регистрация' 'региональный']", "['EGO-SGC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['EGO-SGC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['EGO-SGC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['EGO-SGC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['EGO-SGC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['EGO-SGC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['EGO-SGC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['EGO-SGC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['EGO-SGC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['EGO-SGC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['EGO-SGC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['EGO-SGC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['EGO-VKO' 0 'онлайн' 'букинг' 'московский']", "['EGO-VKO' 0 'онлайн' 'регистрация' 'московский']", "['EGO-VKO' 0 'оффлайн' 'букинг' 'московский']", "['EGO-VKO' 0 'оффлайн' 'регистрация' 'московский']", "['EGO-VKO' 'БГ10' 'онлайн' 'букинг' 'московский']", "['EGO-VKO' 'БГ10' 'онлайн' 'регистрация' 'московский']", "['EGO-VKO' 'БГ10' 'оффлайн' 'букинг' 'московский']", "['EGO-VKO' 'БГ10' 'оффлайн' 'регистрация' 'московский']", "['EGO-VKO' 'БГ20' 'онлайн' 'букинг' 'московский']", "['EGO-VKO' 'БГ20' 'онлайн' 'регистрация' 'московский']", "['EGO-VKO' 'БГ20' 'оффлайн' 'букинг' 'московский']", "['EGO-VKO' 'БГ20' 'оффлайн' 'регистрация' 'московский']", "['EGO-VKO' 'РК10' 'онлайн' 'букинг' 'московский']", "['EGO-VKO' 'РК10' 'онлайн' 'регистрация' 'московский']", "['EGO-VKO' 'РК10' 'оффлайн' 'букинг' 'московский']", "['EGO-VKO' 'РК10' 'оффлайн' 'регистрация' 'московский']", "['ESL-MRV' 0 'онлайн' 'букинг' 'региональный']", "['ESL-MRV' 0 'онлайн' 'регистрация' 'региональный']", "['ESL-MRV' 0 'оффлайн' 'букинг' 'региональный']", "['ESL-MRV' 0 'оффлайн' 'регистрация' 'региональный']", "['ESL-MRV' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['ESL-MRV' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['ESL-MRV' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['ESL-MRV' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['ESL-MRV' 'РК10' 'онлайн' 'букинг' 'региональный']", "['ESL-MRV' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['ESL-MRV' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['ESL-MRV' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['ESL-ROV' 0 'онлайн' 'букинг' 'региональный']", "['ESL-ROV' 0 'онлайн' 'регистрация' 'региональный']", "['ESL-ROV' 0 'оффлайн' 'букинг' 'региональный']", "['ESL-ROV' 0 'оффлайн' 'регистрация' 'региональный']", "['ESL-ROV' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['ESL-ROV' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['ESL-ROV' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['ESL-ROV' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['ESL-ROV' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['ESL-ROV' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['ESL-ROV' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['ESL-ROV' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['ESL-ROV' 'РК10' 'онлайн' 'букинг' 'региональный']", "['ESL-ROV' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['ESL-ROV' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['ESL-ROV' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['EYK-EZV' 0 'онлайн' 'букинг' 'региональный']", "['EYK-EZV' 0 'онлайн' 'регистрация' 'региональный']", "['EYK-EZV' 0 'оффлайн' 'букинг' 'региональный']", "['EYK-EZV' 0 'оффлайн' 'регистрация' 'региональный']", "['EYK-HMA' 0 'онлайн' 'букинг' 'региональный']", "['EYK-HMA' 0 'онлайн' 'регистрация' 'региональный']", "['EYK-HMA' 0 'оффлайн' 'букинг' 'региональный']", "['EYK-HMA' 0 'оффлайн' 'регистрация' 'региональный']", "['EYK-HMA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['EYK-HMA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['EYK-HMA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['EYK-HMA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['EYK-HMA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['EYK-HMA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['EYK-HMA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['EYK-HMA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['EYK-NYA' 0 'онлайн' 'букинг' 'региональный']", "['EYK-NYA' 0 'онлайн' 'регистрация' 'региональный']", "['EYK-NYA' 0 'оффлайн' 'букинг' 'региональный']", "['EYK-NYA' 0 'оффлайн' 'регистрация' 'региональный']", "['EYK-NYA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['EYK-NYA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['EYK-NYA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['EYK-NYA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['EYK-OVS' 0 'онлайн' 'букинг' 'региональный']", "['EYK-OVS' 0 'оффлайн' 'букинг' 'региональный']", "['EYK-OVS' 0 'оффлайн' 'регистрация' 'региональный']", "['EYK-OVS' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['EYK-OVS' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['EYK-OVS' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['EYK-OVS' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['EYK-OVS' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['EYK-OVS' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['EYK-OVS' 'РК10' 'онлайн' 'букинг' 'региональный']", "['EYK-OVS' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['EYK-OVS' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['EYK-SGC' 0 'онлайн' 'букинг' 'региональный']", "['EYK-SGC' 0 'онлайн' 'регистрация' 'региональный']", "['EYK-SGC' 0 'оффлайн' 'букинг' 'региональный']", "['EYK-SGC' 0 'оффлайн' 'регистрация' 'региональный']", "['EYK-SGC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['EYK-SGC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['EYK-SGC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['EYK-SGC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['EYK-SGC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['EYK-SGC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['EYK-SGC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['EYK-SGC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['EYK-SGC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['EYK-SGC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['EYK-SGC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['EYK-SGC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['EYK-TJM' 0 'онлайн' 'букинг' 'региональный']", "['EYK-TJM' 0 'онлайн' 'регистрация' 'региональный']", "['EYK-TJM' 0 'оффлайн' 'букинг' 'региональный']", "['EYK-TJM' 0 'оффлайн' 'регистрация' 'региональный']", "['EYK-TJM' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['EYK-TJM' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['EYK-TJM' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['EYK-TJM' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['EYK-TJM' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['EYK-TJM' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['EYK-TJM' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['EYK-TJM' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['EYK-TJM' 'РК10' 'онлайн' 'букинг' 'региональный']", "['EYK-TJM' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['EYK-TJM' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['EYK-TJM' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['EZV-HMA' 0 'онлайн' 'букинг' 'региональный']", "['EZV-HMA' 0 'онлайн' 'регистрация' 'региональный']", "['EZV-HMA' 0 'оффлайн' 'букинг' 'региональный']", "['EZV-HMA' 0 'оффлайн' 'регистрация' 'региональный']", "['EZV-HMA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['EZV-HMA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['EZV-HMA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['EZV-HMA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['EZV-HMA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['EZV-HMA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['EZV-HMA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['EZV-HMA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['EZV-HMA' 'РК10' 'онлайн' 'букинг' 'региональный']", "['EZV-HMA' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['EZV-HMA' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['EZV-HMA' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['EZV-IRM' 0 'онлайн' 'букинг' 'региональный']", "['EZV-IRM' 0 'онлайн' 'регистрация' 'региональный']", "['EZV-IRM' 0 'оффлайн' 'букинг' 'региональный']", "['EZV-IRM' 0 'оффлайн' 'регистрация' 'региональный']", "['EZV-IRM' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['EZV-IRM' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['EZV-IRM' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['EZV-IRM' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['EZV-IRM' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['EZV-IRM' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['EZV-IRM' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['EZV-IRM' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['EZV-IRM' 'РК10' 'онлайн' 'букинг' 'региональный']", "['EZV-IRM' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['EZV-IRM' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['EZV-IRM' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['EZV-TJM' 0 'онлайн' 'букинг' 'региональный']", "['EZV-TJM' 0 'онлайн' 'регистрация' 'региональный']", "['EZV-TJM' 0 'оффлайн' 'букинг' 'региональный']", "['EZV-TJM' 0 'оффлайн' 'регистрация' 'региональный']", "['EZV-TJM' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['EZV-TJM' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['EZV-TJM' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['EZV-TJM' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['EZV-TJM' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['EZV-TJM' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['EZV-TJM' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['EZV-TJM' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['EZV-TJM' 'РК10' 'онлайн' 'букинг' 'региональный']", "['EZV-TJM' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['EZV-TJM' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['EZV-TJM' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-SGC' 0 'онлайн' 'букинг' 'региональный']", "['GDZ-SGC' 0 'онлайн' 'регистрация' 'региональный']", "['GDZ-SGC' 0 'оффлайн' 'букинг' 'региональный']", "['GDZ-SGC' 0 'оффлайн' 'регистрация' 'региональный']", "['GDZ-SGC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['GDZ-SGC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['GDZ-SGC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['GDZ-SGC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-SGC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['GDZ-SGC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['GDZ-SGC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['GDZ-SGC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-SGC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['GDZ-SGC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['GDZ-SGC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['GDZ-SGC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-TJM' 0 'онлайн' 'букинг' 'региональный']", "['GDZ-TJM' 0 'онлайн' 'регистрация' 'региональный']", "['GDZ-TJM' 0 'оффлайн' 'букинг' 'региональный']", "['GDZ-TJM' 0 'оффлайн' 'регистрация' 'региональный']", "['GDZ-TJM' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['GDZ-TJM' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['GDZ-TJM' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['GDZ-TJM' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-TJM' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['GDZ-TJM' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['GDZ-TJM' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['GDZ-TJM' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-TJM' 'РК10' 'онлайн' 'букинг' 'региональный']", "['GDZ-TJM' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['GDZ-TJM' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['GDZ-TJM' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-UFA' 0 'онлайн' 'букинг' 'региональный']", "['GDZ-UFA' 0 'онлайн' 'регистрация' 'региональный']", "['GDZ-UFA' 0 'оффлайн' 'букинг' 'региональный']", "['GDZ-UFA' 0 'оффлайн' 'регистрация' 'региональный']", "['GDZ-UFA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['GDZ-UFA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['GDZ-UFA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['GDZ-UFA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-UFA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['GDZ-UFA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['GDZ-UFA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['GDZ-UFA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-UFA' 'РК10' 'онлайн' 'букинг' 'региональный']", "['GDZ-UFA' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['GDZ-UFA' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['GDZ-UFA' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['GDZ-VKO' 0 'онлайн' 'букинг' 'московский']", "['GDZ-VKO' 0 'онлайн' 'регистрация' 'московский']", "['GDZ-VKO' 0 'оффлайн' 'букинг' 'московский']", "['GDZ-VKO' 0 'оффлайн' 'регистрация' 'московский']", "['GDZ-VKO' 'БГ10' 'онлайн' 'букинг' 'московский']", "['GDZ-VKO' 'БГ10' 'онлайн' 'регистрация' 'московский']", "['GDZ-VKO' 'БГ10' 'оффлайн' 'букинг' 'московский']", "['GDZ-VKO' 'БГ10' 'оффлайн' 'регистрация' 'московский']", "['GDZ-VKO' 'БГ20' 'онлайн' 'букинг' 'московский']", "['GDZ-VKO' 'БГ20' 'онлайн' 'регистрация' 'московский']", "['GDZ-VKO' 'БГ20' 'оффлайн' 'букинг' 'московский']", "['GDZ-VKO' 'БГ20' 'оффлайн' 'регистрация' 'московский']", "['GDZ-VKO' 'РК10' 'онлайн' 'букинг' 'московский']", "['GDZ-VKO' 'РК10' 'онлайн' 'регистрация' 'московский']", "['GDZ-VKO' 'РК10' 'оффлайн' 'букинг' 'московский']", "['GDZ-VKO' 'РК10' 'оффлайн' 'регистрация' 'московский']", "['GRV-IST' 0 'онлайн' 'букинг' 'региональный']", "['GRV-IST' 0 'оффлайн' 'букинг' 'региональный']", "['GRV-IST' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['GRV-IST' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['GRV-IST' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['GRV-IST' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['GRV-LED' 0 'онлайн' 'букинг' 'региональный']", "['GRV-LED' 0 'онлайн' 'регистрация' 'региональный']", "['GRV-LED' 0 'оффлайн' 'букинг' 'региональный']", "['GRV-LED' 0 'оффлайн' 'регистрация' 'региональный']", "['GRV-LED' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['GRV-LED' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['GRV-LED' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['GRV-LED' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['GRV-LED' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['GRV-LED' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['GRV-LED' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['GRV-LED' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['GRV-LED' 'РК10' 'онлайн' 'букинг' 'региональный']", "['GRV-LED' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['GRV-LED' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['GRV-LED' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['GRV-SGC' 0 'онлайн' 'букинг' 'региональный']", "['GRV-SGC' 0 'онлайн' 'регистрация' 'региональный']", "['GRV-SGC' 0 'оффлайн' 'букинг' 'региональный']", "['GRV-SGC' 0 'оффлайн' 'регистрация' 'региональный']", "['GRV-SGC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['GRV-SGC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['GRV-SGC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['GRV-SGC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['GRV-SGC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['GRV-SGC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['GRV-SGC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['GRV-SGC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['GRV-SGC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['GRV-SGC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['GRV-SGC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['GRV-SGC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['GRV-UFA' 0 'онлайн' 'букинг' 'региональный']", "['GRV-UFA' 0 'онлайн' 'регистрация' 'региональный']", "['GRV-UFA' 0 'оффлайн' 'букинг' 'региональный']", "['GRV-UFA' 0 'оффлайн' 'регистрация' 'региональный']", "['GRV-UFA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['GRV-UFA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['GRV-UFA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['GRV-UFA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['GRV-UFA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['GRV-UFA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['GRV-UFA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['GRV-UFA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['GRV-UFA' 'РК10' 'онлайн' 'букинг' 'региональный']", "['GRV-UFA' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['GRV-UFA' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['GRV-UFA' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['GRV-VKO' 0 'онлайн' 'букинг' 'московский']", "['GRV-VKO' 0 'онлайн' 'регистрация' 'московский']", "['GRV-VKO' 0 'оффлайн' 'букинг' 'московский']", "['GRV-VKO' 0 'оффлайн' 'регистрация' 'московский']", "['GRV-VKO' 'БГ10' 'онлайн' 'букинг' 'московский']", "['GRV-VKO' 'БГ10' 'онлайн' 'регистрация' 'московский']", "['GRV-VKO' 'БГ10' 'оффлайн' 'букинг' 'московский']", "['GRV-VKO' 'БГ10' 'оффлайн' 'регистрация' 'московский']", "['GRV-VKO' 'БГ20' 'онлайн' 'букинг' 'московский']", "['GRV-VKO' 'БГ20' 'онлайн' 'регистрация' 'московский']", "['GRV-VKO' 'БГ20' 'оффлайн' 'букинг' 'московский']", "['GRV-VKO' 'БГ20' 'оффлайн' 'регистрация' 'московский']", "['GRV-VKO' 'РК10' 'онлайн' 'букинг' 'московский']", "['GRV-VKO' 'РК10' 'онлайн' 'регистрация' 'московский']", "['GRV-VKO' 'РК10' 'оффлайн' 'букинг' 'московский']", "['GRV-VKO' 'РК10' 'оффлайн' 'регистрация' 'московский']", "['GSV-SGC' 0 'онлайн' 'букинг' 'региональный']", "['GSV-SGC' 0 'онлайн' 'регистрация' 'региональный']", "['GSV-SGC' 0 'оффлайн' 'букинг' 'региональный']", "['GSV-SGC' 0 'оффлайн' 'регистрация' 'региональный']", "['GSV-SGC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['GSV-SGC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['GSV-SGC' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['GSV-SGC' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['GSV-SGC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['GSV-SGC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['GSV-SGC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['GSV-SGC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['GSV-SGC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['GSV-SGC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['GSV-SGC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['GSV-SGC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-IRM' 0 'онлайн' 'букинг' 'региональный']", "['HMA-IRM' 0 'онлайн' 'регистрация' 'региональный']", "['HMA-IRM' 0 'оффлайн' 'букинг' 'региональный']", "['HMA-IRM' 0 'оффлайн' 'регистрация' 'региональный']", "['HMA-IRM' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['HMA-IRM' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['HMA-IRM' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['HMA-IRM' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-IRM' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['HMA-IRM' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['HMA-IRM' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['HMA-IRM' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['HMA-KGP' 0 'онлайн' 'букинг' 'региональный']", "['HMA-KGP' 0 'онлайн' 'регистрация' 'региональный']", "['HMA-KGP' 0 'оффлайн' 'букинг' 'региональный']", "['HMA-KGP' 0 'оффлайн' 'регистрация' 'региональный']", "['HMA-KRR' 0 'онлайн' 'букинг' 'региональный']", "['HMA-KRR' 0 'онлайн' 'регистрация' 'региональный']", "['HMA-KRR' 0 'оффлайн' 'букинг' 'региональный']", "['HMA-KRR' 0 'оффлайн' 'регистрация' 'региональный']", "['HMA-KRR' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['HMA-KRR' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['HMA-KRR' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['HMA-KRR' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-KRR' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['HMA-KRR' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['HMA-KRR' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['HMA-KRR' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['HMA-KRR' 'РК10' 'онлайн' 'букинг' 'региональный']", "['HMA-KRR' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['HMA-KRR' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['HMA-KRR' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-NJC' 0 'онлайн' 'букинг' 'региональный']", "['HMA-NJC' 0 'онлайн' 'регистрация' 'региональный']", "['HMA-NJC' 0 'оффлайн' 'букинг' 'региональный']", "['HMA-NJC' 0 'оффлайн' 'регистрация' 'региональный']", "['HMA-NJC' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['HMA-NJC' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['HMA-NJC' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['HMA-NJC' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['HMA-NJC' 'РК10' 'онлайн' 'букинг' 'региональный']", "['HMA-NJC' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['HMA-NJC' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['HMA-NJC' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-NYA' 0 'онлайн' 'букинг' 'региональный']", "['HMA-NYA' 0 'онлайн' 'регистрация' 'региональный']", "['HMA-NYA' 0 'оффлайн' 'букинг' 'региональный']", "['HMA-NYA' 0 'оффлайн' 'регистрация' 'региональный']", "['HMA-NYA' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['HMA-NYA' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['HMA-NYA' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['HMA-NYA' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-NYA' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['HMA-NYA' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['HMA-NYA' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['HMA-NYA' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['HMA-NYA' 'РК10' 'онлайн' 'букинг' 'региональный']", "['HMA-NYA' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['HMA-NYA' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['HMA-NYA' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-OMS' 0 'онлайн' 'букинг' 'региональный']", "['HMA-OMS' 0 'онлайн' 'регистрация' 'региональный']", "['HMA-OMS' 0 'оффлайн' 'букинг' 'региональный']", "['HMA-OMS' 0 'оффлайн' 'регистрация' 'региональный']", "['HMA-OMS' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['HMA-OMS' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['HMA-OMS' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['HMA-OMS' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-OMS' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['HMA-OMS' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['HMA-OMS' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['HMA-OMS' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['HMA-OMS' 'РК10' 'онлайн' 'букинг' 'региональный']", "['HMA-OMS' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['HMA-OMS' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['HMA-OMS' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-OVS' 0 'онлайн' 'букинг' 'региональный']", "['HMA-OVS' 0 'онлайн' 'регистрация' 'региональный']", "['HMA-OVS' 0 'оффлайн' 'букинг' 'региональный']", "['HMA-OVS' 0 'оффлайн' 'регистрация' 'региональный']", "['HMA-OVS' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['HMA-OVS' 'БГ10' 'онлайн' 'регистрация' 'региональный']", "['HMA-OVS' 'БГ10' 'оффлайн' 'букинг' 'региональный']", "['HMA-OVS' 'БГ10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-OVS' 'БГ20' 'онлайн' 'букинг' 'региональный']", "['HMA-OVS' 'БГ20' 'онлайн' 'регистрация' 'региональный']", "['HMA-OVS' 'БГ20' 'оффлайн' 'букинг' 'региональный']", "['HMA-OVS' 'БГ20' 'оффлайн' 'регистрация' 'региональный']", "['HMA-OVS' 'РК10' 'онлайн' 'букинг' 'региональный']", "['HMA-OVS' 'РК10' 'онлайн' 'регистрация' 'региональный']", "['HMA-OVS' 'РК10' 'оффлайн' 'букинг' 'региональный']", "['HMA-OVS' 'РК10' 'оффлайн' 'регистрация' 'региональный']", "['HMA-SGC' 0 'онлайн' 'букинг' 'региональный']", "['HMA-SGC' 0 'онлайн' 'регистрация' 'региональный']", "['HMA-SGC' 0 'оффлайн' 'букинг' 'региональный']", "['HMA-SGC' 0 'оффлайн' 'регистрация' 'региональный']", "['HMA-SGC' 'БГ10' 'онлайн' 'букинг' 'региональный']", "['HMA-SGC' 'БГ10' 'онлайн' 'регистрация' 'региональный']", ...]
ser = pd.Series([str(a.iloc[i,:].values[:5]) for i in range(len(a))])
a = a.set_index(ser)
a.iloc[4].values[5:10]
array([0.035381750465549346, 0.013745704467353952, 0.026277372262773723,
0.029684601113172542, 0.00929368029739777], dtype=object)
a.iloc[4].name
"['AAQ-AER' 'БГ10' 'онлайн' 'букинг' 'региональный']"
layout = {'title' : 'Доля багажа по неделям',
'autosize' : False,
'width' : 1000,
'height' : 800
}
traces = [go.Scatter(y=a.iloc[i].values[5:10],
x=a.columns[5:10],
name=a.iloc[i].name) for i in range(len(a))]
data = traces
fig = go.Figure(data=data, layout=layout)#, sliders=sliders)
iplot(fig, show_link=False)
dolya_bag[0:5]
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 21 | 22 | 23 | 24 | 25 |
|---|---|---|---|---|---|---|---|---|
| Маршрут | ||||||||
| AAQ-AER | онлайн | букинг | региональный | 0.119181 | 0.070447 | 0.106569 | 0.100186 | 0.031599 |
| AAQ-AER | онлайн | регистрация | региональный | 2.064516 | 1.108108 | 1.659091 | 1.285714 | 0.680000 |
| AAQ-AER | оффлайн | букинг | региональный | 0.286996 | 0.119186 | 0.344340 | 0.188811 | 0.062963 |
| AAQ-AER | оффлайн | регистрация | региональный | 5.818182 | 1.413793 | 1.871795 | 3.176471 | 1.000000 |
| AAQ-HMA | онлайн | букинг | региональный | 0.050000 | 0.054475 | 0.036585 | 0.098765 | 0.079365 |
dolya_bag[(dolya_bag['онлайн_оффлайн'] == 'онлайн')][[21,22,23,24,25]].values
array([[0.11918063, 0.07044674, 0.10656934, 0.10018553, 0.03159851],
[2.06451613, 1.10810811, 1.65909091, 1.28571429, 0.68 ],
[0.05 , 0.05447471, 0.03658537, 0.09876543, 0.07936508],
...,
[1.70588235, 2.125 , 3. , 1.94117647, 0.89285714],
[ nan, 0. , 0. , nan, nan],
[ nan, nan, 0. , nan, nan]])
x = [21,22,23,24,25]
y1 = dolya_bag[(dolya_bag['онлайн_оффлайн'] == 'онлайн')][[21,22,23,24,25]].values
y2 = dolya_bag[(dolya_bag['онлайн_оффлайн'] == 'оффлайн')][[21,22,23,24,25]].values
dolya_bag.iloc[1].values[3:]
array([0.003740648379052369, 0.0020161290322580645, 0.004081632653061225,
0.0022624434389140274, 0.0], dtype=object)
dolya_bag[21].round(4)
Маршрут
AAQ-AER 0.0636
AAQ-AER 0.0037
AAQ-AER 0.0125
AAQ-AER 0.0000
AAQ-HMA 0.0299
...
USK-VKO 0.0011
VIE-VKO NaN
VIE-VKO NaN
VKO-ZNZ NaN
VKO-ZNZ NaN
Name: 21, Length: 645, dtype: float64
dolya_bag = dolya_bag.reset_index()
ser = pd.Series([str(dolya_bag.iloc[i,:].values[:4]) for i in range(len(dolya_bag))])
dolya_bag = dolya_bag.set_index(ser)
df_TD_good_for_nac_svod_segmts = df_TD_with_filtrs_tickets_only.pivot_table(
values = 'Количество проданных сегментов',
index = ['Маршрут'],
columns = 'Неделя эксперимента', aggfunc = 'sum')
bag_kolvo = df_TD_with_filtrs_tickets.pivot_table(
values = 'Услуга_Багаж', index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента', aggfunc = 'sum')
bag_kolvo = bag_kolvo.reset_index()
df_TD_good_for_nac_svod_segmts = df_TD_good_for_nac_svod_segmts.reset_index()
dolya_bag = bag_kolvo.merge(df_TD_good_for_nac_svod_segmts, how = 'left', on = 'Маршрут').set_index(['Маршрут'])
dolya_bag
for i in df_TD_good_for_nac_svod_segmts.columns[1:]:
dolya_bag[i] = dolya_bag['{}_x'.format(i)]/dolya_bag['{}_y'.format(i)]
dolya_bag = dolya_bag.iloc[:,[0,1,2,13,14,15,16,17]]
dolya_bag = dolya_bag.reset_index()
ser = pd.Series([str(dolya_bag.iloc[i,:].values[:4]) for i in range(len(dolya_bag))])
dolya_bag = dolya_bag.set_index(ser)
traces = [go.Scatter(y=dolya_bag.iloc[i].values[3:],
x=dolya_bag.columns[3:],
name=dolya_bag.iloc[i].name) for i in range(len(dolya_bag))]
data = traces
layout = {'title' : 'Доля багажа по неделям',
'autosize' : False,
'width' : 1000,
'height' : 800
}
fig = go.FigureWidget(data=data, layout=layout)
def update_fig(change):
aux_df = dolya_bag[dolya_bag['онлайн_оффлайн'].isin(change['new'])]
with fig.batch_update():
traces = [go.Scatter(y=aux_df.iloc[i].values[3:],
x=aux_df.columns[3:],
name=aux_df.iloc[i].name) for i in range(len(aux_df))]
# for trace, column in zip(fig.data, [dolya_bag.iloc[i].values[3:] for i in aux_df.index]):
# trace.x = aux_df[dolya_bag.columns[3:]]
# trace.y = aux_df[column]
drop = w.Dropdown(options=[
('All', ['онлайн', 'оффлайн']),
('онлайн', ['онлайн']),
('оффлайн', ['оффлайн']),
])
drop.observe(update_fig, names='value')
display(w.VBox([drop, fig]))
print(change['new'])
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-270-4ef12269ccf2> in <module> ----> 1 print(change['new']) NameError: name 'change' is not defined
df[:5]
| category | date | col1 | col2 | |
|---|---|---|---|---|
| 0 | G1 | 2012-04-01 | 54 | 46.0 |
| 1 | G1 | 2012-04-05 | 34 | 29.0 |
| 2 | G1 | 2012-04-09 | 65 | 55.0 |
| 3 | G1 | 2012-04-11 | 67 | 57.0 |
| 4 | G1 | 2012-04-16 | 23 | 20.0 |
from plotly import graph_objs as go
import ipywidgets as w
from IPython.display import display
import pandas as pd
df = pd.DataFrame()
df['category'] = ['G1', 'G1', 'G1', 'G1','G1', 'G1','G1', 'G2', 'G2', 'G2', 'G2', 'G2', 'G2', 'G2']
df['date'] = ['2012-04-01', '2012-04-05', '2012-04-09', '2012-04-11', '2012-04-16', '2012-04-23', '2012-04-30',
'2012-04-01', '2012-04-05', '2012-04-09', '2012-04-11', '2012-04-16', '2012-04-23', '2012-04-30']
df['col1'] = [54, 34, 65, 67, 23, 34, 54, 23, 67, 24, 64, 24, 45, 89]
df['col2'] = round(df['col1'] * 0.85)
x = 'date'
y1 = 'col1'
y2 = 'col2'
trace1 = {
'x': df[x],
'y': df[y1],
'type': 'scatter',
'mode': 'lines',
'name':'col 1',
'marker': {'color': 'blue'}
}
trace2={
'x': df[x],
'y': df[y2],
'type': 'scatter',
'mode': 'lines',
'name':'col 2',
'marker': {'color': 'yellow'}
}
data = [trace1, trace2]
# Create layout for the plot
layout=dict(
title='my plot',
xaxis=dict(
title='Date',
type='date',
tickformat='%Y-%m-%d',
ticklen=5,
titlefont=dict(
family='Old Standard TT, serif',
size=20,
color='black'
)
),
yaxis=dict(
title='values',
ticklen=5,
titlefont=dict(
family='Old Standard TT, serif',
size=20,
color='black'
)
)
)
# Here's the new part
fig = go.FigureWidget(data=data, layout=layout)
def update_fig(change):
aux_df = df[df.category.isin(change['new'])]
with fig.batch_update():
for trace, column in zip(fig.data, [y1, y2]):
trace.x = aux_df[x]
trace.y = aux_df[column]
drop = w.Dropdown(options=[
('All', ['G1', 'G2']),
('G1', ['G1']),
('G2', ['G2']),
])
drop.observe(update_fig, names='value')
display(w.VBox([drop, fig, fig]))
data.movies()
import plotly.express as px
from vega_datasets import data
import pandas as pd
df = data.movies()
df = df.dropna()
df['Genre_id'] = df.Major_Genre.factorize()[0]
fig = px.parallel_coordinates(
df,
dimensions=[
'IMDB_Rating', 'IMDB_Votes', 'Production_Budget', 'Running_Time_min',
'US_Gross', 'Worldwide_Gross', 'US_DVD_Sales'
],
color='IMDB_Rating',
color_continuous_scale=px.colors.sequential.Emrld)
fig.show()
--------------------------------------------------------------------------- OSError Traceback (most recent call last) ~\Anaconda3\lib\urllib\request.py in do_open(self, http_class, req, **http_conn_args) 1349 try: -> 1350 h.request(req.get_method(), req.selector, req.data, headers, 1351 encode_chunked=req.has_header('Transfer-encoding')) ~\Anaconda3\lib\http\client.py in request(self, method, url, body, headers, encode_chunked) 1254 """Send a complete request to the server.""" -> 1255 self._send_request(method, url, body, headers, encode_chunked) 1256 ~\Anaconda3\lib\http\client.py in _send_request(self, method, url, body, headers, encode_chunked) 1300 body = _encode(body, 'body') -> 1301 self.endheaders(body, encode_chunked=encode_chunked) 1302 ~\Anaconda3\lib\http\client.py in endheaders(self, message_body, encode_chunked) 1249 raise CannotSendHeader() -> 1250 self._send_output(message_body, encode_chunked=encode_chunked) 1251 ~\Anaconda3\lib\http\client.py in _send_output(self, message_body, encode_chunked) 1009 del self._buffer[:] -> 1010 self.send(msg) 1011 ~\Anaconda3\lib\http\client.py in send(self, data) 949 if self.auto_open: --> 950 self.connect() 951 else: ~\Anaconda3\lib\http\client.py in connect(self) 1416 -> 1417 super().connect() 1418 ~\Anaconda3\lib\http\client.py in connect(self) 925 if self._tunnel_host: --> 926 self._tunnel() 927 ~\Anaconda3\lib\http\client.py in _tunnel(self) 903 self.close() --> 904 raise OSError("Tunnel connection failed: %d %s" % (code, 905 message.strip())) OSError: Tunnel connection failed: 407 Proxy Authentication Required During handling of the above exception, another exception occurred: URLError Traceback (most recent call last) <ipython-input-174-34a0d0566d52> in <module> 2 from vega_datasets import data 3 import pandas as pd ----> 4 df = data.movies() 5 df = df.dropna() 6 df['Genre_id'] = df.Major_Genre.factorize()[0] ~\Anaconda3\lib\site-packages\vega_datasets\core.py in __call__(self, use_local, **kwargs) 231 parsed data 232 """ --> 233 datasource = BytesIO(self.raw(use_local=use_local)) 234 235 kwds = self._pd_read_kwds.copy() ~\Anaconda3\lib\site-packages\vega_datasets\core.py in raw(self, use_local) 210 ) 211 else: --> 212 return urlopen(self.url).read() 213 214 def __call__(self, use_local: bool = True, **kwargs) -> pd.DataFrame: ~\Anaconda3\lib\urllib\request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context) 220 else: 221 opener = _opener --> 222 return opener.open(url, data, timeout) 223 224 def install_opener(opener): ~\Anaconda3\lib\urllib\request.py in open(self, fullurl, data, timeout) 523 524 sys.audit('urllib.Request', req.full_url, req.data, req.headers, req.get_method()) --> 525 response = self._open(req, data) 526 527 # post-process response ~\Anaconda3\lib\urllib\request.py in _open(self, req, data) 540 541 protocol = req.type --> 542 result = self._call_chain(self.handle_open, protocol, protocol + 543 '_open', req) 544 if result: ~\Anaconda3\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args) 500 for handler in handlers: 501 func = getattr(handler, meth_name) --> 502 result = func(*args) 503 if result is not None: 504 return result ~\Anaconda3\lib\urllib\request.py in https_open(self, req) 1391 1392 def https_open(self, req): -> 1393 return self.do_open(http.client.HTTPSConnection, req, 1394 context=self._context, check_hostname=self._check_hostname) 1395 ~\Anaconda3\lib\urllib\request.py in do_open(self, http_class, req, **http_conn_args) 1351 encode_chunked=req.has_header('Transfer-encoding')) 1352 except OSError as err: # timeout error -> 1353 raise URLError(err) 1354 r = h.getresponse() 1355 except: URLError: <urlopen error Tunnel connection failed: 407 Proxy Authentication Required>
df
| Title | US_Gross | Worldwide_Gross | US_DVD_Sales | Production_Budget | Release_Date | MPAA_Rating | Running_Time_min | Distributor | Source | Major_Genre | Creative_Type | Director | Rotten_Tomatoes_Rating | IMDB_Rating | IMDB_Votes | Genre_id | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1064 | 12 Rounds | 12234694.0 | 18184083.0 | 8283859.0 | 20000000.0 | Mar 27 2009 | PG-13 | 108.0 | 20th Century Fox | Original Screenplay | Action | Contemporary Fiction | Renny Harlin | 28.0 | 5.4 | 8914.0 | 0 |
| 1074 | 2012 | 166112167.0 | 766812167.0 | 50736023.0 | 200000000.0 | Nov 13 2009 | PG-13 | 158.0 | Sony Pictures | Original Screenplay | Action | Science Fiction | Roland Emmerich | 39.0 | 6.2 | 396.0 | 0 |
| 1090 | 300 | 210614939.0 | 456068181.0 | 261252400.0 | 60000000.0 | Mar 09 2007 | R | 117.0 | Warner Bros. | Based on Comic/Graphic Novel | Action | Historical Fiction | Zack Snyder | 60.0 | 7.8 | 235508.0 | 0 |
| 1095 | 3:10 to Yuma | 53606916.0 | 69791889.0 | 51359371.0 | 48000000.0 | Sep 02 2007 | R | 117.0 | Lionsgate | Remake | Western | Historical Fiction | James Mangold | 89.0 | 7.9 | 98355.0 | 1 |
| 1107 | 88 Minutes | 16930884.0 | 32955399.0 | 11385055.0 | 30000000.0 | Apr 18 2008 | R | 106.0 | Sony Pictures | Original Screenplay | Thriller/Suspense | Contemporary Fiction | Jon Avnet | 5.0 | 5.9 | 31205.0 | 2 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 3158 | The Wrestler | 26236603.0 | 43236603.0 | 11912450.0 | 6000000.0 | Dec 17 2008 | R | 109.0 | Fox Searchlight | Original Screenplay | Drama | Contemporary Fiction | Darren Aronofsky | 98.0 | 8.2 | 93301.0 | 3 |
| 3181 | Year One | 43337279.0 | 57604723.0 | 14813995.0 | 60000000.0 | Jun 19 2009 | PG-13 | 97.0 | Sony Pictures | Original Screenplay | Comedy | Historical Fiction | Harold Ramis | 14.0 | 5.0 | 23091.0 | 4 |
| 3183 | Yes Man | 97690976.0 | 225990976.0 | 26601131.0 | 50000000.0 | Dec 19 2008 | PG-13 | 104.0 | Warner Bros. | Based on Book/Short Story | Comedy | Contemporary Fiction | Peyton Reed | 43.0 | 7.0 | 62150.0 | 4 |
| 3195 | Zombieland | 75590286.0 | 98690286.0 | 28281155.0 | 23600000.0 | Oct 02 2009 | R | 87.0 | Sony Pictures | Original Screenplay | Comedy | Fantasy | Ruben Fleischer | 89.0 | 7.8 | 81629.0 | 4 |
| 3196 | Zack and Miri Make a Porno | 31452765.0 | 36851125.0 | 21240321.0 | 24000000.0 | Oct 31 2008 | R | 101.0 | Weinstein Co. | Original Screenplay | Comedy | Contemporary Fiction | Kevin Smith | 65.0 | 7.0 | 55687.0 | 4 |
174 rows × 17 columns
df_TD_good_for_nac_svod_segmts = df_TD_with_filtrs_tickets_only.pivot_table(
values = 'Количество проданных сегментов',
index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента', aggfunc = 'sum')
bag_kolvo = df_TD_with_filtrs_tickets.pivot_table(
values = 'Услуга_Багаж',
index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента',
aggfunc = 'sum')
bag_kolvo = bag_kolvo.reset_index()
df_TD_good_for_nac_svod_segmts = df_TD_good_for_nac_svod_segmts.reset_index()
dolya_bag = bag_kolvo.merge(df_TD_good_for_nac_svod_segmts,
how = 'left',
on = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный']
).set_index(['Маршрут'])
dolya_bag
for i in df_TD_good_for_nac_svod_segmts.columns[4:]:
dolya_bag['{}_dolya'.format(i)] = dolya_bag['{}_x'.format(i)]/dolya_bag['{}_y'.format(i)]
dolya_bag[:3] #= dolya_bag.iloc[:,[0,1,2,13,14,15,16,17]]
#dolya_bag = dolya_bag.reset_index()
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 21_x | 22_x | 23_x | 24_x | 25_x | 21_y | 22_y | 23_y | 24_y | 25_y | 21_dolya | 22_dolya | 23_dolya | 24_dolya | 25_dolya |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | ||||||||||||||||||
| AAQ-AER | онлайн | букинг | региональный | 51.0 | 29.0 | 54.0 | 40.0 | 11.0 | 537.0 | 582.0 | 685.0 | 539.0 | 538.0 | 0.094972 | 0.049828 | 0.078832 | 0.074212 | 0.020446 |
| AAQ-AER | онлайн | регистрация | региональный | 3.0 | 2.0 | 4.0 | 2.0 | 0.0 | 31.0 | 37.0 | 44.0 | 42.0 | 25.0 | 0.096774 | 0.054054 | 0.090909 | 0.047619 | 0.000000 |
| AAQ-AER | оффлайн | букинг | региональный | 10.0 | 10.0 | 14.0 | 12.0 | 6.0 | 223.0 | 344.0 | 212.0 | 286.0 | 270.0 | 0.044843 | 0.029070 | 0.066038 | 0.041958 | 0.022222 |
income_bag = df_TD_with_filtrs_tickets.pivot_table(
values = 'Тариф на купоне из услуг',
index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента',
aggfunc = 'sum')
income_bag = income_bag.reset_index()
dolya_bag = dolya_bag.reset_index()
income_dolya_bag = dolya_bag.merge(income_bag,
how = 'left',
on = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный']
).set_index(['Маршрут'])
for i in df_TD_good_for_nac_svod_segmts.columns[4:]:
income_dolya_bag['{}_mean_bag'.format(i)] = income_dolya_bag[i]/income_dolya_bag['{}_y'.format(i)]
income_dolya_bag[:3]
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 21_x | 22_x | 23_x | 24_x | 25_x | 21_y | 22_y | 23_y | 24_y | 25_y | 21_dolya | 22_dolya | 23_dolya | 24_dolya | 25_dolya | 21 | 22 | 23 | 24 | 25 | 21_mean_bag | 22_mean_bag | 23_mean_bag | 24_mean_bag | 25_mean_bag |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | ||||||||||||||||||||||||||||
| AAQ-AER | онлайн | букинг | региональный | 51.0 | 29.0 | 54.0 | 40.0 | 11.0 | 537.0 | 582.0 | 685.0 | 539.0 | 538.0 | 0.094972 | 0.049828 | 0.078832 | 0.074212 | 0.020446 | 108567.5 | 64681.0 | 114260.0 | 86278.5 | 22792.5 | 202.174115 | 111.135739 | 166.802920 | 160.071429 | 42.365242 |
| AAQ-AER | онлайн | регистрация | региональный | 3.0 | 2.0 | 4.0 | 2.0 | 0.0 | 31.0 | 37.0 | 44.0 | 42.0 | 25.0 | 0.096774 | 0.054054 | 0.090909 | 0.047619 | 0.000000 | 6900.0 | 5000.0 | 9600.0 | 4000.0 | 0.0 | 222.580645 | 135.135135 | 218.181818 | 95.238095 | 0.000000 |
| AAQ-AER | оффлайн | букинг | региональный | 10.0 | 10.0 | 14.0 | 12.0 | 6.0 | 223.0 | 344.0 | 212.0 | 286.0 | 270.0 | 0.044843 | 0.029070 | 0.066038 | 0.041958 | 0.022222 | 20897.0 | 21394.0 | 35198.5 | 27796.0 | 13099.0 | 93.708520 | 62.191860 | 166.030660 | 97.188811 | 48.514815 |
nac_tarif = df_TD_with_filtrs_tickets_only.pivot_table(
values = 'Наценка',
index = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный'],
columns = 'Неделя эксперимента',
aggfunc = 'sum')
income_dolya_bag = income_dolya_bag.reset_index()
nac_tarif = nac_tarif.reset_index()
income_dolya_bag_nac = income_dolya_bag.merge(nac_tarif,
how = 'left',
on = ['Маршрут','онлайн_оффлайн','букинг_регистрация','Московский_Региональный']
).set_index(['Маршрут'])
for i in df_TD_good_for_nac_svod_segmts.columns[4:]:
income_dolya_bag_nac['{}_mean_nac'.format(i)] = income_dolya_bag_nac.iloc[:,i+7]/income_dolya_bag_nac.iloc[:,i-13]
income_dolya_bag_nac[:3]
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 21_x | 22_x | 23_x | 24_x | 25_x | 21_y | 22_y | 23_y | 24_y | 25_y | 21_dolya | 22_dolya | 23_dolya | 24_dolya | 25_dolya | 21_x | 22_x | 23_x | 24_x | 25_x | 21_mean_bag | 22_mean_bag | 23_mean_bag | 24_mean_bag | 25_mean_bag | 21_y | 22_y | 23_y | 24_y | 25_y | 21_mean_nac | 22_mean_nac | 23_mean_nac | 24_mean_nac | 25_mean_nac |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | ||||||||||||||||||||||||||||||||||||||
| AAQ-AER | онлайн | букинг | региональный | 51.0 | 29.0 | 54.0 | 40.0 | 11.0 | 537.0 | 582.0 | 685.0 | 539.0 | 538.0 | 0.094972 | 0.049828 | 0.078832 | 0.074212 | 0.020446 | 108567.5 | 64681.0 | 114260.0 | 86278.5 | 22792.5 | 202.174115 | 111.135739 | 166.802920 | 160.071429 | 42.365242 | 183000.0 | 241250.0 | 244500.0 | 235625.0 | 226125.0 | 340.782123 | 414.518900 | 356.934307 | 437.152134 | 420.306691 |
| AAQ-AER | онлайн | регистрация | региональный | 3.0 | 2.0 | 4.0 | 2.0 | 0.0 | 31.0 | 37.0 | 44.0 | 42.0 | 25.0 | 0.096774 | 0.054054 | 0.090909 | 0.047619 | 0.000000 | 6900.0 | 5000.0 | 9600.0 | 4000.0 | 0.0 | 222.580645 | 135.135135 | 218.181818 | 95.238095 | 0.000000 | 9000.0 | 13125.0 | 12000.0 | 5500.0 | 8625.0 | 290.322581 | 354.729730 | 272.727273 | 130.952381 | 345.000000 |
| AAQ-AER | оффлайн | букинг | региональный | 10.0 | 10.0 | 14.0 | 12.0 | 6.0 | 223.0 | 344.0 | 212.0 | 286.0 | 270.0 | 0.044843 | 0.029070 | 0.066038 | 0.041958 | 0.022222 | 20897.0 | 21394.0 | 35198.5 | 27796.0 | 13099.0 | 93.708520 | 62.191860 | 166.030660 | 97.188811 | 48.514815 | 111875.0 | 169660.0 | 148815.0 | 188175.0 | 182650.0 | 501.681614 | 493.197674 | 701.957547 | 657.954545 | 676.481481 |
df_main_kpi = income_dolya_bag_nac[['онлайн_оффлайн',
'букинг_регистрация',
'Московский_Региональный',
'21_dolya','22_dolya', '23_dolya', '24_dolya', '25_dolya',
'21_mean_bag', '22_mean_bag', '23_mean_bag', '24_mean_bag', '25_mean_bag',
'21_mean_nac', '22_mean_nac', '23_mean_nac', '24_mean_nac', '25_mean_nac']]
df_main_kpi
| Неделя эксперимента | онлайн_оффлайн | букинг_регистрация | Московский_Региональный | 21_dolya | 22_dolya | 23_dolya | 24_dolya | 25_dolya | 21_mean_bag | 22_mean_bag | 23_mean_bag | 24_mean_bag | 25_mean_bag | 21_mean_nac | 22_mean_nac | 23_mean_nac | 24_mean_nac | 25_mean_nac |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Маршрут | ||||||||||||||||||
| AAQ-AER | онлайн | букинг | региональный | 0.094972 | 0.049828 | 0.078832 | 0.074212 | 0.020446 | 202.174115 | 111.135739 | 166.802920 | 160.071429 | 42.365242 | 340.782123 | 414.518900 | 356.934307 | 437.152134 | 420.306691 |
| AAQ-AER | онлайн | регистрация | региональный | 0.096774 | 0.054054 | 0.090909 | 0.047619 | 0.000000 | 222.580645 | 135.135135 | 218.181818 | 95.238095 | 0.000000 | 290.322581 | 354.729730 | 272.727273 | 130.952381 | 345.000000 |
| AAQ-AER | оффлайн | букинг | региональный | 0.044843 | 0.029070 | 0.066038 | 0.041958 | 0.022222 | 93.708520 | 62.191860 | 166.030660 | 97.188811 | 48.514815 | 501.681614 | 493.197674 | 701.957547 | 657.954545 | 676.481481 |
| AAQ-AER | оффлайн | регистрация | региональный | 0.000000 | 0.000000 | 0.025641 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 58.974359 | 0.000000 | 0.000000 | 272.727273 | 103.448276 | 528.846154 | 419.117647 | 441.176471 |
| AAQ-HMA | онлайн | букинг | региональный | 0.050000 | 0.042802 | 0.036585 | 0.086420 | 0.063492 | 137.470833 | 106.964981 | 85.334329 | 166.580247 | 142.798889 | 1619.375000 | 1894.747082 | 1741.920732 | 1565.432099 | 2163.888889 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| USK-VKO | оффлайн | регистрация | московский | 0.021739 | 0.000000 | 0.078947 | 0.021739 | 0.039216 | 60.869565 | 0.000000 | 205.263158 | 76.086957 | 103.921569 | 2314.673913 | 2047.847826 | 2823.421053 | 2273.260870 | 2498.627451 |
| VIE-VKO | онлайн | букинг | московский | NaN | 0.000000 | 0.000000 | NaN | NaN | NaN | 0.000000 | 0.000000 | NaN | NaN | NaN | 900.000000 | 1125.000000 | NaN | NaN |
| VIE-VKO | оффлайн | букинг | московский | NaN | NaN | 0.000000 | NaN | NaN | NaN | NaN | 0.000000 | NaN | NaN | NaN | NaN | 750.000000 | NaN | NaN |
| VKO-ZNZ | онлайн | букинг | московский | NaN | NaN | 0.000000 | NaN | NaN | NaN | NaN | 0.000000 | NaN | NaN | NaN | NaN | 1890.000000 | NaN | NaN |
| VKO-ZNZ | оффлайн | букинг | московский | NaN | NaN | NaN | NaN | 0.000000 | NaN | NaN | NaN | NaN | 0.000000 | NaN | NaN | NaN | NaN | 0.000000 |
645 rows × 18 columns
income_dolya_bag_nac.columns
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-1-dac8f6e34847> in <module> ----> 1 income_dolya_bag_nac.columns NameError: name 'income_dolya_bag_nac' is not defined